Я хочу поймать событие нажатия кнопки. Идентификатор кнопки динамически генерируется внутри ng-repeat.
.set(ng-repeat='button in ['4', '3' , '2', '1' ]')
button(id='{{$index}}') button {{button}}
Кнопка 4
Кнопка 3
Кнопка 2
Кнопка 1
Где я могу поместить атрибут / класс директивы my-dir
?
.my-dir
.set ...
Вышеуказанное не работает.
и
.my-dir.set ...
выполняет функцию связывания несколько раз.
/ * ниже код более подробно, если приведенное выше утверждение недостаточно ясно * /
Директива
myApp.directive('myDir', function() {
var linkFn = function(scope, element, attrs) {
alert('inside linkFn');
$('button').on('click', function() { alert('button clicked');});
}
return {
restrict: 'C',
link: linkFn
}
});
используя ng-repeat
, класс my-dir
может быть помещен либо в область действия ng-repeat, либо вне ее
случай 1: my-dir выходит за рамки ng-repeat
.my-dir
.set(ng-repeat='button in buttons')
button(id='id{{$index}}') {{item}}
теперь приведенный выше код $('.set').on('click', function() { alert('button clicked');});
не выполняется!
случай 2: my-dir находится внутри ng-repeat
(в контроллере) $scope.buttons=['4', '3', '2', '1']
.set(ng-repeat='button in buttons').my-dir
button(id='id{{$index}}') button {{item}}
теперь, когда вы нажимаете button 4
"кнопка нажата" появляется в окне предупреждения 4 раза. По button 3
3 раза и тд.
ng-click
? Кроме того, идентификатор не должен содержать пробелов, это не похоже на класс, где его может быть несколько (см. stackoverflow.com/questions/192048/) - person TheSharpieOne   schedule 26.09.2013ids
- person Sangram Singh   schedule 26.09.2013