【发布时间】:2012-08-10 12:57:16
【问题描述】:
我有一个 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 中不再起作用。
【问题讨论】:
-
您可能想查看 ember-data。它为您提供了一个模型对象(从 Object 扩展而来),它可以满足您所有的“isDirty”需求。它还有许多其他不错的功能,可以轻松获取/更新模型对象和创建模型关系。而且在您的更高级别中,您不应该再担心“isDirty”状态了。使用 ember 的要点之一是不再担心所有数据状态的管理,只需将模板绑定到数据(您的数据更新和模板更新;不需要额外的引导)。
-
因为我根本不使用 ember-data,我宁愿有一些我不需要添加 ember-data 的东西,只是为了验证脏度。我想我会尝试 deepCopy,deepCompare 我有问题的对象。
标签: ember.js