观看任意ng-repeat集合

时间:2013-04-28 23:11:48

标签: javascript angularjs

我正在努力寻找正确的Angular Way来观看任意的ng-repeat集合。 当ng-repeat的内容发生变化时,目标只是接收新的列表内容。 (当然不知道集合名称)。

假设我添加collection-update这样的指令:

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

我想在每次更改列表时收到当前的ng-repeat项目(已过滤)。

我可以依赖播音员/通知模式,例如http://plnkr.co/edit/6IrvzD9PcbskWq3C0qPr?p=preview但是可能更简单,可以简单地“观看”该集合。

最后,目标是为http://blog.revolunet.com/angular-carousel添加“指标”支持。

谢谢:)

2 个答案:

答案 0 :(得分:0)

您正在寻找$watch,有关详细信息,请参阅http://docs.angularjs.org/api/ng.$rootScope.Scope

来自文档:

  

$ watch(watchExpression,listener,objectEquality)

     

每当watchExpression发生更改时,都会注册一个侦听器回调函数。

例如,您可以在控制器中执行以下操作:

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

答案 1 :(得分:0)

经过一些实验,我找到了解决这个问题的方法。

诀窍是在链接函数中逐步解析ngRepeat表达式,然后只是观察它。我从真棒Ben Nadel AngularJS blog借用了代码,结果显示在这里:http://plnkr.co/edit/qFVrxTCQ0OW1oMKeV647?p=preview

告诉我你是否知道任何替代方案(例如内置表达式解析)