我最近更新了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;
};
答案 0 :(得分:1)
好的,这是一个错误并已修复。该修复程序将在Breeze 1.4.3中提供,或者现在可从Breeze Git存储库获得。 ...并且感谢您找到它。 :)