javascript - lightGallery(jQuery插件)在AngularJS中




jquery-plugins (2)

我试图让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和这个插件一起玩呢?

更新:

经过一些调试,似乎jQuery(element).lightGallery()在模型绑定到视图之前被执行。 那么问题是我怎么能得到一个指令,当一切都被绑定,而不是之前。


一旦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


没有指示

HTML

<ul id="lightgallery">
  <li ng-repeat="image in album.images" data-src="{{imagem.fullres}}">
    <img ng-src="{{image.thumbnail}}" />
  </li>
</ul>

JavaScript的

// $http, Restangular whatever to return data in album.images

// unbind before..
jQuery('#lightgallery').unbind().removeData();

// $timeout after
$timeout(function () {
  jQuery('#lightgallery').lightGallery();
}, 100);

为我工作..







lightgallery