如何在ViewModel中向breeze实体添加属性,以协助View显示?

时间:2014-04-30 22:05:04

标签: knockout.js breeze

如何将一个knockoutobserable属性添加到一个breeze实体 - ViewModel中的IsSelected(),以协助View显示?

IsSelected不是实体中的字段也不应该是,但是我需要标记为UI DOM操作选择的entites(添加/删除css类等)

IsSelected确实是一个UI用户,但这就是MVVM模式对我来说多云的地方。

1 个答案:

答案 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方法,因为它被称为微风保湿实体的第一步。