Emberjs - 在@each中改变的模型

Shi*_*nko 5 javascript ember.js

我有一个ArrayController观察每个模型的特定性质的变化.我用它是.observes('content.@each.someprop')为了那个目的:

App.ListController = Em.ArrayController.extend({
    content: [],

    myObserver: function () {
        //check changed property
        //do stuff if changed to some specific value
    }.observes('content.@each.someprop')
});
Run Code Online (Sandbox Code Playgroud)

到目前为止一直很好 - 观察者在任何模型的属性发生变化时触发.然而,当它触发时,我不知道哪个模型已经改变了 - 我必须迭代模型并将该属性与存储在别处的旧值进行比较以找出它,这是非常笨拙和低效的.我试图检查arguments观察者收到的内容,但它们也没用:console.log(arguments)从观察者内部给出以下内容:[Class, "content.@each.someprop"],并console.log(arguments[0].toString())给出<App.ListController:ember366>- 控制器本身和属性字符串.

所以我的问题是:有没有办法知道在观察数组的@each属性时哪个模型已经改变了?

更新

当观察者发射时,我想检查被监视的属性是否已经改变为某个特定值,如果是,请做一些事情.

如我所示,我itemController现在将检查.

Jak*_*old 0

您可以直接在模型上观察该属性,您可以在其中访问this。当您观察时,@each您不应该真正关心特定记录的更改,而只关心某些内容发生了变化。

使用 anitemController也是一种选择,但可能有点矫枉过正。