AngularJs指令在模板中使用ng-repeat并更新数据集

时间:2013-06-19 10:23:33

标签: angularjs angularjs-directive jcarousel

这个问题的testcase。我正在尝试在angularjs应用程序中使用JCarousel。为此,我创建了一个工作正常的指令。

angular.module('directives', []).directive('jcarousel',
    function() {
      return {
        restrict: "A",
        scope: {feeds: '=', active_partner: '='},
        template: '<ul><li ng-repeat="(k, feed_item) in feeds  | filter: { partner_id: active_partner.id }">{{feed_item.text}}</li></ul>',
        link: function(scope, elem, attr, ctrl){
          c = 3;
          item_margin = 10;
          item_padding = 10;
          $(elem).addClass('carousel');
          cw = $('.carousel ul').width();
          iw = (cw-item_margin*c - c*item_padding*2) / c;
          scope.$watch('feeds', function(feeds){
             if (feeds.length){
              $('.carousel ul li').width(iw);
              $(elem).jcarousel({scroll: 1});
              $('.jcarousel-next').html('<i class="icon-chevron-right"></i>');
              $('.jcarousel-prev').html('<i class="icon-chevron-left"></i>');
            }
          });
        }
      };
    }
  );

使用非常简单:

<label>
  Filter:
  <select ng-model="active_partner" ng-options="partner as partner.name for partner in partners"></select>
</label>
<p>Count: {{ feeds.length }}</p>
<div jcarousel feeds="feeds" active_partner="active_partner"></div>

我需要在轮播中过滤Feed,并且由于某些原因在过滤后应用jcarousel会导致html中的一些混乱:

enter image description here

任何帮助表示感谢。

0 个答案:

没有答案