如何触发从angularjs指令指定索引的li元素的click事件? 我已经尝试使用$ first来触发第一个元素的click,但它不起作用。
感谢您的帮助。
答案 0 :(得分: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>
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 +')'});
});
}
}
}]);
如果在另一个答案中指出,你可能最好在图像上添加ng-click。
<强>更新强>
演示的链接不正确。它已更新为:http://plnkr.co/edit/ybcNosdPA76J1IqXjcGG?p=preview
答案 1 :(得分:8)
这更像是Angular的做法:http://plnkr.co/edit/xYNX47EsYvl4aRuGZmvo?p=preview
ng-click
中调用了它。您的最终要求可能会有所不同,但使用指令绑定click
并更改src
是过度的,因为大部分内容都可以使用模板处理background-image
,那么你需要一个像ngSrc这样的指令来推迟设置background-image
样式,直到实际数据加载完毕为止。答案 2 :(得分:2)
这是对兰登答案的延伸,并采用指导性方法解决问题。如果你要在页面上有多个画廊,这可能是一种方法,而不用大惊小怪。
用法:
<gallery images="items"></gallery>
<gallery images="cats"></gallery>
答案 3 :(得分:0)
这是我在页面加载时触发按钮单击的方式。
<li ng-repeat="a in array">
<a class="button" id="btn" ng-click="function(a)" index="$index" on-load-clicker>
{{a.name}}
</a>
</li>
一个简单的指令,它从ng-repeat中获取索引并使用条件调用索引中的第一个按钮,并在页面加载时单击它。
angular
.module("myApp")
.directive('onLoadClicker', function ($timeout) {
return {
restrict: 'A',
scope: {
index: '=index'
},
link: function($scope, iElm) {
if ($scope.index == 0) {
$timeout(function() {
iElm.triggerHandler('click');
}, 0);
}
}
};
});
这是我能够首先以编程方式触发自动点击的唯一方式。 angular.element(document.querySelector('#btn')).click();
无法从控制器工作,因此如果您尝试在页面加载上运行单击并且可以通过传入索引来指定要单击的按钮,那么使这个简单的指令看起来最有效。我通过另一个帖子参考:https://stackoverflow.com/a/26495541/4684183 onLoadClicker指令获得了这个堆栈溢出答案的帮助。