我在使用isDirty时遇到了麻烦,事实上它似乎不受相关子模型的影响...

我创建了一个JS fiddle尝试进行解释。如果编辑我的名字,isNotDirty的计算属性将变为false。如果您重新运行页面并编辑子模型,则它不会更改isNotDirty ...

App.IndexController = Ember.ObjectController.extend({
    isNotDirty: Em.computed.not('isDirty')
});

这是一个已知问题还是我做错了什么?

最佳答案

您需要创建一个计算属性,以监视所有子记录上的isDirty,如下所示:

App.IndexController = Ember.ObjectController.extend({
    isNotDirty: function() {
        return !this.get('projects').someProperty('isDirty');
    }.property('[email protected]')
});

您还可以创建一个将父记录的脏状态考虑在内的属性:
App.IndexController = Ember.ObjectController.extend({
    isParentOrAnyChildDirty: function() {
        return this.get('isDirty') || this.get('projects').someProperty('isDirty');
    }.property('isDirty', '[email protected]')
});

10-06 04:48