我有一个模特:
class WordList {
List<Word> words = [];
}
它是通过依赖注入我的一个视图创建的。
@NgController(
selector: '[list-ctrl]',
publishAs: 'ctrl'
)
class ListCtrl {
WordList wordList;
Scope scope;
ListCtrl(this.router, this.wordList, this.scope) {
scope.$watchCollection("", onChange );
}
每当从该列表修改项目时,我都想运行一些逻辑。我该如何做到这一点?
我相信关键是在$ watchCollection中,但我无法弄清楚要作为监视表达式传递什么。 “ctrl.wordList.words”将告诉我何时添加/删除项目,但不会更改。
答案 0 :(得分:6)
$watchCollection
只能查看List
中的更改,而不是列表项目中的更改。这样做的原因是观察每个对象会有爆炸性的属性。
scope.$watch(() => wordList, onChange);
您可以通过以下方式实现onChange
方法,以便在每个新项目上创建更多监视,并从集合中删除项目移除时的监视。