加载后是否可以观察模型属性?

时间:2014-08-27 08:45:02

标签: ember.js ember-data

在我的用例中,我希望在某些属性发生变化时使模型无效,以便用户在发布更改之前需要重新验证

invalidate: function () {
    this.set('model.valid', false);
}.observes('model.solution', 'model.setup', 'model.tests')

问题(我认为)是观察者在模型发生变化时触发,包括何时加载,这可能是模型有效且所有属性都没有改变的时间,但是因为它触发有效设置为假的。

使用isDirty没有用,因为模型总是很脏

包含我的意图并不明显,我所拥有的是一个模型,我希望在某些属性发生变化时无效,保存更改而无效导致模型未发布,它还要求模型有效以便发布它(但不是为了保存它)。

目前我的解决方法是在发布时验证,但我更愿意,如果我能做到前者。

2 个答案:

答案 0 :(得分:0)

是的,棘手的情况。每当模型切换所有这些属性都发生了变化。在这种情况下,我在模型本身上定义了无效,这样他们改变的唯一时间就是特定模型的变化。

App.Foo = DS.Model.extend({
  ...
  valid: true,
  invalidate: function () {
    this.set('valid', false);
  }.observes('solution', 'setup', 'tests')
});

答案 1 :(得分:0)

我遇到了同样的问题,但我找到了一些适用于我的方法。

请参阅以下链接。有一个使用“observesBefore”函数而不是“观察”的例子 How can an observer find out the before and after values of the observed property in Ember.js?

我使用带参数的observesBefore来检查模型的先前状态,并设置新属性值以确定这是第一次加载模型还是用户做出更改。