在我的用例中,我希望在某些属性发生变化时使模型无效,以便用户在发布更改之前需要重新验证
invalidate: function () {
this.set('model.valid', false);
}.observes('model.solution', 'model.setup', 'model.tests')
问题(我认为)是观察者在模型发生变化时触发,包括何时加载,这可能是模型有效且所有属性都没有改变的时间,但是因为它触发有效设置为假的。
使用isDirty
没有用,因为模型总是很脏
包含我的意图并不明显,我所拥有的是一个模型,我希望在某些属性发生变化时无效,保存更改而无效导致模型未发布,它还要求模型有效以便发布它(但不是为了保存它)。
目前我的解决方法是在发布时验证,但我更愿意,如果我能做到前者。
答案 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来检查模型的先前状态,并设置新属性值以确定这是第一次加载模型还是用户做出更改。