首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Emberjs -在@each中更改的模型

Emberjs -在@each中更改的模型
EN

Stack Overflow用户
提问于 2013-03-03 08:03:53
回答 2查看 850关注 0票数 5

我有一个ArrayController,它观察每个模型的特定属性的变化。为此,我使用.observes('content.@each.someprop')

代码语言:javascript
复制
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> -控制器本身和属性字符串。

因此,我的问题是:在观察数组的@each属性时,是否有一种方法可以知道哪个模型发生了更改?

更新

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

正如建议的那样,我现在将检查itemController

EN

回答 2

Stack Overflow用户

发布于 2013-10-23 18:42:26

您可以使用reduceComputedarrayComputed在当前的ember中实现这一点。

了解您的用例会很好:很可能有一种比手动创建观察者更好的方法。

票数 1
EN

Stack Overflow用户

发布于 2013-03-16 09:39:33

您可以直接在模型上观察该属性,在模型中您只需访问this。当您在@each中观察时,您不应该真正关心某个特定的记录是否发生了变化,只是某些事情发生了变化。

使用itemController也是一种选择,但这可能是过度的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15183682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档