ayi*_*mos 26 events click angularjs angularjs-directive
如何触发li元素的click事件来指定angularjs指令的索引?我尝试使用$ first来触发第一个元素的click,但它不起作用.
谢谢你的帮助.
luc*_*uma 38
这可能是您实现这一目标的另一种方式.将指令和项目都传递给指令,并让指令在模板中设置html:
演示:http: //plnkr.co/edit/ybcNosdPA76J1IqXjcGG?p = preview
HTML:
<ul id="thumbnails">
<li class="thumbnail" ng-repeat="item in items" options='#my-container' itemdata='item' index="$index">
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
js指令:
app.directive('thumbnail', [function() {
return {
restrict: 'CA',
replace: false,
transclude: false,
scope: {
index: '=index',
item: '=itemdata'
},
template: '<a href="#"><img src="{{item.src}}" alt="{{item.alt}}" /></a>',
link: function(scope, elem, attrs) {
if (parseInt(scope.index) == 0) {
angular.element(attrs.options).css({'background-image':'url('+ scope.item.src +')'});
}
elem.bind('click', function() {
var src = elem.find('img').attr('src');
// call your SmoothZoom here
angular.element(attrs.options).css({'background-image':'url('+ scope.item.src +')'});
});
}
}
}]);
Run Code Online (Sandbox Code Playgroud)
如果在另一个答案中指出,你可能最好在图像上添加ng-click.
更新
演示的链接不正确.它已更新为:http://plnkr.co/edit/ybcNosdPA76J1IqXjcGG?p = preview
这更像是Angular的方法:http : //plnkr.co/edit/xYNX47EsYvl4aRuGZmvo?p=preview
ng-click.您的最终要求可能不同,但使用指令进行绑定click和更改src是过度的,因为大部分都可以使用模板处理background-image,那么你需要一个像ngSrc这样的指令来推迟设置background-image样式,直到加载实际数据.