2

我有一个基本视图模型如下:

var myApp = myApp || {};

myApp.BaseViewModel = function () {
    self = this;
    self.var1 = ko.observable();
    self.messageToSay = Function() {
        alert("in Base view model");
    };
    self.sayMessage = function() {
        self.messageToSay();
    }
};

我有一个继承自 BaseViewModel 的视图模型,如下所示:

var myApp = myApp || {};

myApp.HomeViewModel = function() {

   var self = this;
   ko.utils.extend(self. new myApp.BaseviewModel());

   self.messageToSay = Function() {
        alert("in Home view model");
    };

};

var vm = new myApp.HomeViewModel();
ko.applyBindings(vm, vm);

问题是当我执行 vm.sayMessage() 时总是返回“在基本视图模型中”而不是“在主视图模型中”。如何获取 HomeViewModel 中的 messageToSay() 方法来覆盖 BaseViewModel() 中的方法?

谢谢马丁

4

1 回答 1

2

这是您应该执行继承的方式:

myApp.HomeViewModel = function() {

   var self = this;
   myApp.BaseviewModel.apply(self, [/*BaseViewModel constructor args */]);

   self.messageToSay = function() {
        alert("in Home view model");
    };

};

见小提琴

我希望它有所帮助。

于 2013-06-26T13:31:02.143 回答