【发布时间】:2013-10-02 22:21:31
【问题描述】:
我想捕获按钮的点击事件。 button的id是在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?此外,ID 不应包含空格,它不像可以有多个的类(请参阅stackoverflow.com/questions/192048/…) -
对于 DOM 操作,建议使用指令。我想在单击按钮时更改 css。我没有使用
ids中的空间@ -
抱歉,格式已关闭,id 字段似乎包含空格。
-
如果您使用的是Jade,请考虑添加相应的标签。
标签: angularjs angularjs-directive pug angularjs-ng-repeat ng-repeat