在Breeze中不会正常创建已定义的属性

时间:2014-06-11 05:30:06

标签: breeze

在我的项目中,我在我的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,我将这些属性用于扩展的填充

1 个答案:

答案 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

了解有关扩展实体的不同方式的更多详细信息

希望这有帮助。