【发布时间】:2012-11-29 01:32:17
【问题描述】:
我正在尝试扩展一个实体以创建一个需要导航属性的计算 observable:
app.domain.indicador = function () {
this.ValorMetaActual = ko.computed({
read: function () {
console.log(this.ValoresMeta); //navigation property: undefined
return 0;
},
deferEvaluation: true
}, this);
};
问题是当observable被创建时,导航属性还不存在。
我能做些什么来解决这个问题?
【问题讨论】:
-
“indicador”是 entityType 构造函数吗?您是否考虑过注册一个初始化程序来定义计算?依赖导航属性将在您的初始化程序被调用时定义。
-
indicador 是一个实体类型,是的。我正在扩展实体,如下所述:breezejs.com/documentation/extending-entities(部分:添加敲除计算)并在元数据存储中注册(store.registerEntityTypeCtor("Indicador", app.domain.indicador);)。我有其他扩展实体可以很好地处理普通属性。这是我第一次尝试在计算的 observable 中使用导航属性。如果相关,变量 ValoresMeta 是一个集合。明天我可以提供更多代码(这里是晚上 9:46 :))
-
您在 Breeze KO 模型库中发现了一个细微的错误。我们正在修复它。感谢您找到它。同时,如果它在初始化程序中,您的逻辑应该可以工作。或者至少它在我模拟你的例子中有效。当我们为构造函数解决问题时,我们会在这里通知您。
-
这很简单 :) 请参阅下面 Jay 对 v.0.76.3 中的修复的评论
标签: knockout.js breeze