在我的项目中,我在我的Ctor中定义了属性
Object.defineProperty(this, 'DTasks', {
get: function() {
return handlePropertyGet('_dtasks', "DTasks");
},
set: function(value) { //used only when loading incidents from the server
handlePropertySet('DTask', value);
},
enumerable: true
});
然后在新版本的breeze中 - 添加use strict确实删除了属性,因此需要添加configuralbe:true。但是这个属性被重建了#34;在backingStore和此属性的值中添加了结果字段。在微风中定义属性的最佳方法是什么?因为这个属性不需要在backingStore中,因为它没有映射一个,所以可能在类型的初始化中定义它?由于我正在使用缺少导航属性的正确配置的Microsoft OData,我将这些属性用于扩展的填充
答案 0 :(得分:0)
当您对未映射的属性使用ES5定义的属性时,Breeze将假定您要将行为(例如更改跟踪,验证等)附加到setter。这就是Breeze将属性添加到backingStore的原因。如果你想在不告诉Breeze跟踪它们的情况下定义它们,你可以使用构造后的初始化技术。
var customerInitializer = function(customer) {
customer.isBeingEdited = ko.observable(false);
//or just customer.isBeingEdited = false, if you're using Angular
};
metadataStore.registerEntityTypeCtor('Customer', null, customerInitializer);
您可以在http://www.breezejs.com/documentation/extending-entities
了解有关扩展实体的不同方式的更多详细信息希望这有帮助。