我有一个ember对象,我想知道它是否处于脏状态。
var App.Post = Ember.Object.create({
title: "Test",
isDirty: false
});
App.Post.set("title", "Test2");
App.Post.get("isDirty") // Should === true
目前,我已尝试重载对象的集合
App.Post = Ember.Object.create({
set: function(path, value) {
this._super(path, value);
this._super("isDirty", true);
}
})
当我直接调用myObject.set时它起作用,但在使用embers绑定时似乎没有使用该set函数。我添加了日志,并且常规的emberjs绑定工作流不会调用此方法。
我尝试过的另一件事是添加一个观察者来切换脏标志。
App.Post = Ember.Object.create({
hasBeenModified: function() {
this.set("isDirty", true);
}.observes("title")
})
由于一个仍然未知的原因,当我在模型级别使用观察时,我的绑定在UI中不再起作用。
答案 0 :(得分:0)
我相信您可能还需要覆盖setUnknownProperty。用户界面正在使用Ember.set(object, key, value)
。如果你看一下实现
https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/property_set.js#L60
它不会调用您的setter,但会调用setUnknownProperty
(如果存在)。
实际上,在
https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/property_set.js#L52
如果您在App.Post
课程中预定了该字段,他们似乎会致电您的二传手。