0

これがこの質問のテストケースです。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>

カルーセルでフィードをフィルタリングする必要があります。何らかの理由で、フィルタリング後に jcarousel を適用すると、html が混乱します。

ここに画像の説明を入力

どんな助けでも感謝します。

4

0 に答える 0