我正在努力寻找正确的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添加“指标”支持。
谢谢:)
答案 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
告诉我你是否知道任何替代方案(例如内置表达式解析)