如何将一个knockoutobserable属性添加到一个breeze实体 - ViewModel中的IsSelected(),以协助View显示?
IsSelected不是实体中的字段也不应该是,但是我需要标记为UI DOM操作选择的entites(添加/删除css类等)
IsSelected确实是一个UI用户,但这就是MVVM模式对我来说多云的地方。
答案 0 :(得分:3)
您可以使用metadataStore.registerEntityTypeCtor
方法扩展您的微风实体
在我的一些项目中,我有一个单独的函数来扩展每个实体。
所以你最终会得到这样的东西。
function extendProduct(metadataStore) {
var ctor = function () {
};
var initialiser = function (entity) {
entity.isSelected= ko.observable(false);
return entity;
};
metadataStore.registerEntityTypeCtor('Product', ctor, initialiser);
}
我通常使用初始化器,因为它在微风通过添加其所有附加属性等水合实体后被调用。
我通常远离contstructor方法,因为它被称为微风保湿实体的第一步。