1

我正在努力寻找正确的 Angular 方式来观看任意 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添加“指标”支持。

谢谢 :)

4

2 回答 2

0

您正在寻找$watch,请参阅http://docs.angularjs.org/api/ng.$ro​​otScope.Scope了解更多信息。

从文档:

$watch(watchExpression, listener, objectEquality)

注册一个侦听器回调,以在 watchExpression 更改时执行。

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

scope.$watch('items', function(newValue, oldValue) {
    updateCounter(newValue);
});
于 2013-04-28T23:19:00.540 回答
0

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

诀窍是在链接函数中逐字解析 ngRepeat 表达式,然后简单地观察它。我从很棒的Ben Nadel AngularJS 博客借用了代码,结果在这里可见:http ://plnkr.co/edit/qFVrxTCQ0OW1oMKeV647?p=preview

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

于 2013-04-29T00:24:51.633 回答