我有一个从JSON对象构建的模型.
// extend the json model to get all props
App.Model = Ember.Object.extend(window.jsonModel);
Run Code Online (Sandbox Code Playgroud)
我希望在更新任何内容时自动保存模型.有什么方法可以为整个模型添加观察者吗?
编辑://添加我目前的解决方案
现在我做:
// XXX Can't be right
for (var prop in window.jsonModel) {
if (window.jsonModel.hasOwnProperty(prop)) {
App.model.addObserver(prop, scheduleSave);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个很大的形式,这意味着我增加了大量的观察者 - 它看起来效率很低.
一个萤火虫断点Ember.sendEvent()揭示了有App.model.lastName:change被发送的事件.我可以在那里进行拦截,但希望有正式的方法.
我想观察对象属性的所有更改.
在以下示例中,如果更改了firstname或lastname,我希望personChanged观察者通知我.
但我想在所有对象属性上应用泛型(使用Ember.keys()??)如何用更通用的东西替换'firstname','lastname'?
在我的例子中:
personChanged被调用时firstname或lastname发生变化:
App.MyObject: Ember.Object.create({
firstname: 'first',
lastname: 'last',
personChanged: Ember.observer(function() {
console.log("person changed");
}, 'firstname', 'lastname')
})
Run Code Online (Sandbox Code Playgroud) 对于数组,我知道你可以这样做:
function() {
}.observes("array.@each")
Run Code Online (Sandbox Code Playgroud)
我所做的是将对象转换为数组并使用@each观察属性,但有没有更好的方法来观察对象的所有属性更改而不将其转换为数组?