我正在尝试使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/

10-12 15:40