gpt4 book ai didi

object - 如何观察所有对象属性的变化?

转载 作者:行者123 更新时间:2023-12-02 11:56:18 25 4
gpt4 key购买 nike

对于数组,我知道你可以这样做:

function() {
}.observes("array.@each")

我所做的是将对象转换为数组并使用@each观察属性,但是有没有更好的方法来观察对象所有属性的变化而不将其转换为数组?

最佳答案

您可以观察 isDirty 以查看自上次保存以来是否有任何对象的值被修改(如果您使用的是 Ember Data)。

或者,您可以将逗号分隔的属性列表传递给observes。如果您的对象有很多属性,这可能会很长,但会起作用。

第三种方法可能是覆盖 setUnknownProperty() 并设置一个属性,即“脏标志”(或执行您可能想要在其中执行的任何操作。

还有一个old SO post给出以下答案:

App.WatchedObject = Ember.Object.extend({
firstProp: null,
secondProp: "bar",

init: function(){
this._super();
var self = this;
Ember.keys(this).forEach(function(key){
if(Ember.typeOf(self.get(key)) !== 'function'){
self.addObserver(key, function(){
console.log(self.get(key));
});
}
});
}
});

您可以将其拆分为 Mixin 以保持代码干燥。

关于object - 如何观察所有对象属性的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com