【发布时间】:2014-02-23 07:55:30
【问题描述】:
大师,
这是我的场景:
我正在使用微风的 registerEntityTypeCtor 函数在我的一个实体上定义一个新的客户端属性(即 fullName)。 fullName 属性被编码为检查实体上的 firstName 和 lastName 属性的值以确定它的值。当我进行查询并从数据库接收实体时,它可以工作。
但是,当我在客户端创建新实体(调用微风的 createEntity 函数)或更改 firstName 或 LastName 属性而不进行保存时,自定义 fullName 属性永远不会更新,直到我执行另一个 db pull。使用轻而易举的更改跟踪,fullName 属性不应该在任何名称属性更改时更新吗?
在调试期间,我注意到当我在代码中使用 getter 时:(即 var fullName = entity.fullName)——当我单步执行代码时,ctor 会命中我的实体的“backingStore”值,这是默认值值(使用 createEntity)或最后一个 db 值,但绝不是实体的当前值。
我错过了什么?谢谢
这是我用于设置属性的示例:
function registerSpmoleSurvey(metadataStore) {
metadataStore.registerEntityTypeCtor('SpmoleSurvey', spmoleSurvey);
function spmoleSurvey() { }
Object.defineProperty(spmoleSurvey.prototype, 'fullName', {
get: function () {
var ln = this.lastName;
var fn = this.firstName;
return ln ? fn + ' ' + ln : fn;
}
});
}
【问题讨论】: