Breezejs ComplexType不执行自定义初始化函数

时间:2013-09-27 04:55:31

标签: javascript breeze single-page-application

我最近更新了Breezejs 1.4.2,看起来运行自定义初始化程序时出现问题。我的应用程序正确地(我相信)使用Breeze注册ctor和初始化程序,但是当我从entityframework支持的webapi检索记录时,初始化程序未被执行。从github处的签入来源看来,初始化代码已被注释掉,注释表明初始化程序将从另一段代码执行。我有什么想法可以解决这个问题?我可能会降级到1.4.1,因为它正在工作。我会删除它看到的注释部分是否有效,但是想知道是否有其他人经历同样的事情?

C#

public class ForecastItem
{
    public int Id { get; set; }
    public Result CurrentYear { get; set; }
    /* extra detail removed */
}


public class Result 
{
    public int? Actual { get; set; }
    public int? Estimate { get; set; }

}

的Javascript

    function extendResult(metadataStore) {
        var ctor = function () { };

        var initialiser = function (entity) {
            entity.useEstimate = ko.computed({
                read: function () {
                    return entity.actual() === -1 ? true : false;
                },
                deferEvaluation: true
            });
            return entity;
        };
        metadataStore.registerEntityTypeCtor('Result', ctor, initialiser);
    }

修改
我已经取消了breeze.debug.js中的代码,它现在正在运行。

ComplexType proto obejct

proto._createInstanceCore = function (parent, parentProperty ) {
    var aCtor = this.getCtor();
    var instance = new aCtor();
    new ComplexAspect(instance, parent, parentProperty);
    // TODO: don't think that this is needed anymore - createInstance call will do this 
    //if (parent) {
    //    this._initializeInstance(instance);
    //}
    return instance;
};

1 个答案:

答案 0 :(得分:1)

好的,这是一个错误并已修复。该修复程序将在Breeze 1.4.3中提供,或者现在可从Breeze Git存储库获得。 ...并且感谢您找到它。 :)