2013-05-06 67 views
1

我想弄清楚這裏的操作順序,而且我明顯失敗了。AngularJS指令計時問題

我試圖實現一個jQuery圖像庫插件作爲指令。該插件需要一組圖像,使用$ .load將它們加載到DOM中,然後在完成後創建一個漂亮的畫廊。

你可以看到我的例子here。如果您點擊「加載圖片」,它將從Flickr中拉出20張圖片。我想要發生的事情是,在加載時調用$ .gridnav函數。我在單擊「顯示GridNav」時展示了該功能,但顯然不希望將第二個按鈕單擊爲需求。

現在,我的指令位於我的ng-repeat之外,它綁定到從flickr成功回調設置的屬性。所以我明白爲什麼它不會再被調用,我只是不知道該怎麼做才能做這個功能。

回答

3

我不完全確定gridnav應該如何工作,所以我不確定這是否可以正常工作,但是如果在數組發生更改時調用gridnav怎麼辦?您可以通過視圖將數組傳遞給指令,然後在指令內的範圍內傳遞數組。

HTML:

<div class="well clearfix giftCardList tj_container" id="giftCardContainer" 
    gridnav="giftCards"> 
    ... 

JS:

link: function ($scope, element, attrs) { 
    // watch for the value passed in to gridnav attribute to change 
    $scope.$watch(attrs.gridnav, function(value){ 
    // don't do anything unless there's actually a value 
    if (!value) return; 
    // once it's changed, call gridnav on the next loop 
    $timeout(function() { 
     $(element).gridnav({ 
     rows: 1, 
     navL: '#giftCard_prev', 
     navR: '#giftCard_next', 
     type: { 
      mode: 'disperse', 
      speed: 400, 
      easing: '', 
      factor: '', 
      reverse: '' 
     } 
     }, 0); 
    }, true); 
    }); 
} 

Plunker:http://plnkr.co/edit/lMYvIJEkEPRAaNIAuNvF?p=preview

+0

絕對正確的,謝謝夥計! – 2013-05-06 16:42:57