有没有办法在knockoutjs中扩展现有的viewmodel?

时间:2013-06-23 16:49:28

标签: javascript knockout.js knockout-2.0

我有这样的代码:

function ModelA() {
    var self = this;

    self.Message = ko.observable("Mesage");
}

ko.applyBindings(new ModelA());

我想以某种方式通过另一个模型继承已经绑定的模型:

function Modelb() {
    var self = this;

    self.Message2 = ko.observable("Mesage2");
}

我该怎么做?

2 个答案:

答案 0 :(得分:1)

作为达米恩回答的替代方案,如果你试图扩展原始模型的模型是动态的,你可能最好在原始模型中创建一个observale。

function ModelA() {
    var self = this;

    self.Message = ko.observable("Message");
    self.SubModel = ko.observable();

    self.extendModelB = function() {
        self.SubModel(new ModelB());
    }

    self.extendModelC = function() {
        self.SubModel(new ModelC());
    }
}

function ModelB() {
    var self = this;

    self.Message2 = ko.observable("Message2");
}

function ModelC() {
    var self = this;

    self.Message3 = ko.observable("Message3");
}

然后在SubModel observable上使用with绑定。只是另一种选择。

答案 1 :(得分:0)

这是一个可能有用的插件:http://plnkr.co/edit/M1Pt9Lt4UKB0Coe3PauH

如果Html元素绑定到模型,属性或函数,则绑定的元素在绑定时必须是模型的一部分。

这也可能有所帮助:http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html