gpt4 book ai didi

ember.js - 检测 Ember.Object 是否脏的最佳方法

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

我有一个 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 绑定(bind)时它似乎没有使用该 set 函数。我添加了日志,但常规的 emberjs 绑定(bind)工作流不会调用此方法。

我尝试过的另一件事是添加一个观察者来切换脏标志。

App.Post = Ember.Object.create({
hasBeenModified: function() {
this.set("isDirty", true);
}.observes("title")
})

出于未知原因,当我在模型级别使用观察时,我的绑定(bind)在 UI 中不再起作用。

最佳答案

我相信您可能还需要覆盖 setUnknownProperty。 UI 使用 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 类中预定义了该字段,他们似乎会调用您的 setter 。

关于ember.js - 检测 Ember.Object 是否脏的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902140/

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