2013-04-28 49 views
1

我正在努力尋找正確的Angular Way來觀看任意的ng-repeat集合。 目標只是在ng-repeat內容發生變化時接收新的列表內容。 (當然不知道集合名稱)。觀看任意的ng-repeat集合

說我加collection-update指令是這樣的:

<ul collection-update="updateCounter($list)"> 
    <li ng-repeat="item in items|uppercase">{{ item.title }}</li> 
</ul> 

我想收到的每一個列表改變當前的NG-重複項目(過濾)。

我可以依賴播音員/通知模式,例如http://plnkr.co/edit/6IrvzD9PcbskWq3C0qPr?p=preview,但也許有些簡單的東西,可以簡單地「觀看」收藏。

最後,我們的目標是爲http://blog.revolunet.com/angular-carousel添加「指標」支持。

謝謝:)

回答

0

您正在尋找$watch,看到http://docs.angularjs.org/api/ng.$rootScope.Scope以獲取更多信息。

從文檔:

$腕錶(watchExpression,聽衆,objectEquality)

註冊一個偵聽器回調要執行每當watchExpression變化。

舉個例子,你可以做這樣的事情在你的控制器:

scope.$watch('items', function(newValue, oldValue) { 
    updateCounter(newValue); 
}); 
+0

作爲提問時說,我要觀看的表達而不瞭解它(動態),並且應用任何過濾器。 (當然我知道$ watch) – jujule 2013-04-28 23:25:09

+0

如果你想要通知你的應用程序的一個單獨的部分,沒有明確的耦合,你可以使用'$ watch'然後'$ broadcast'。你顯然會在它聲明的地方(即一個自定義指令?)知道'ng-repeat'表達式,所以你可以在那裏設置一個廣播 - 也就是沿着'carouselChanged'事件的行。 – 2013-04-28 23:36:50

+0

會很好,如果用戶只需要在其ul上設置「carousel」。那麼指令本身就會照顧到觀看ng-repeat表達式。 – jujule 2013-04-28 23:45:16