2013-04-28 46 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