javascript - Emberjs - 在 @each 中改变的模型

标签 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')
});

到目前为止一切顺利 - 当任何模型的属性发生变化时,观察者都会触发。但是,当它启动时,我不知道哪个模型发生了变化——我必须遍历模型并将该属性与存储在其他地方的旧值进行比较才能弄清楚,这是非常笨拙和低效的。我试着检查 arguments观察者收到,但它们也没有用:console.log(arguments)从观察者内部给出以下内容:[Class, "content.@each.someprop"] , 和 console.log(arguments[0].toString())给出 <App.ListController:ember366> - Controller 本身和属性字符串。

所以我的问题是:有没有办法在观察数组的 @each 时知道哪个模型发生了变化?属性(property)?

更新

当观察者触发时,我想检查被监视的属性是否已更改为某个特定值,如果是,则执行一些操作。

按照建议我会检查 itemController现在。

最佳答案

您可以在当前的 ember 中使用 reduceComputed 实现此目的或 arrayComputed .

不过,最好了解您的用例:很可能有比手动创建观察者更好的方法。

关于javascript - Emberjs - 在 @each 中改变的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183682/

相关文章:

javascript - 我不知道为什么 JSON 响应不能转发 ajax 的回调,而是通过浏览器显示并停留在我发送请求的页面上

javascript - 异步等待未按预期工作。使用 await 后值为 'undefined'

javascript - Falcor 模型如何处理对字符串的引用?

javascript - Ember : Error with named outlets

javascript - 在 Ember 类中使用变量进行数组键命名

javascript - 如何保护 AngularJS $http.post 数据?

javascript - 为什么相同的逻辑在 Java 中失败并显示索引错误,但在 JavaScript 中却没有?

Ember.js 恢复历史滚动,重置链接滚动

javascript - Ember 反向对象无法正常工作

javascript - ember.js - 从数组中提取不同的属性