2014-08-27 79 views
0

在我的使用情况下,我想在它的一些属性改变,因此用户需要发布自己的更改之前重新验证无效的模型加载后是否可以观察模型属性?

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

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

使用isDirty是无益的模型则​​总是脏

柜面我的意图不是很明显,我有什么是模型,我希望每当一些属性改变为无效,而节省的原因无效的变化为了建模未发布,它还要求该模型是有效的,才能发布它(但不保存它)。

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

回答

0

我有同样的问题,但我找到了一些解决方法,适用于我的情况。

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

我用observesBefore与自变量来检查模型和新的属性值的先前状态被设定为查明这是否是第一次模型加载或用户所做的更改。

+0

不是我所希望的,但很好的enaugh – 2014-08-29 07:12:33

0

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

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

我最初在模型中定义了它,我有一个类似的问题 – 2014-08-28 09:33:42