我正在尝试使lightGallery jQuery插件(http://sachinchoolur.github.io/lightGallery/index.html)与AngularJS一起使用。
我找到了一些提示,提示我需要一个指令,因此创建了以下代码:
.directive('lightGallery', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
jQuery(element).lightGallery();
}
};
})
然后在我看来,我这样做:
<ul lightGallery>
<li ng-repeat="photo in album.photos" data-src="{{photo.fullres}}">
<img ng-src="{{photo.thumbnail}}" />
</li>
</ul>
(我也尝试过
<ul light-gallery>
)当我运行页面时,单击任何缩略图都不会发生任何事情。
我可以在链接函数中放入
alert()
,然后显示出来。如何让AngularJS与jQuery和此插件一起玩?
更新:
经过一些调试后,似乎在将模型绑定(bind)到 View 之前执行了
jQuery(element).lightGallery()
。因此,问题是当绑定(bind)所有内容而不是在绑定(bind)所有内容之前,如何才能获得要调用的指令。
最佳答案
ng-repeat完成渲染后,调用lightGallery。
您可以像这样修改指令
.directive('lightgallery', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
if (scope.$last) {
// ng-repeat is completed
element.parent().lightGallery();
}
}
};
});
的HTML
<ul>
<li lightgallery ng-repeat="photo in photos" data-src="{{photo.fullres}}">
<img ng-src="{{photo.thumbnail}}" />
</li>
</ul>
这是演示plnkr
关于javascript - AngularJS中的lightGallery(jQuery插件),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30220165/