4

我有一个模型:

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,但我不知道要传递什么作为 watch 表达式。“ctrl.wordList.words”会告诉我何时添加/删除项目,但未更改。

4

1 回答 1

6

$watchCollection正如您所指出的,只能观察列表中的项目的变化,而List不是观察列表中的项目的变化。这样做的原因是观察每个对象都会有爆炸性的属性。

scope.$watch(() => wordList, onChange);

您可以onChange以这样一种方式实现该方法,即在每个新项目上创建更多监视,并从集合中取消注册删除项目时的监视。

于 2014-01-07T01:25:54.403 回答