带有 knockout.js 函数覆盖的 Javascript

标签 javascript inheritance knockout.js

我有一个基本的 View 模型如下:

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 的 View 模型,如下所示:

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() 时总是返回“在基本 View 模型中”而不是“在主视图模型中”。如何获取 HomeViewModel 中的 messageToSay() 方法以覆盖 BaseViewModel() 中的方法?

谢谢 马丁

最佳答案

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

myApp.HomeViewModel = function() {

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

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

};

See fiddle

希望对你有帮助。

关于带有 knockout.js 函数覆盖的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17321250/

相关文章:

javascript - JS浏览器: check if error generated by getUserMedia() is a DOMException error object

c# - 在 .NET 中调用基类中的测试方法

javascript - 如何更改knockoutjs observableArray的索引而不替换整个数组

javascript - knockout : How to select an item by property name from an observableArray of objects

javascript - Jquery动画向左滑动​​(扩展)并向下滑动

javascript - 需要黑客在网站上实现音乐播放器

正则表达式 : how to match multiline and closetag

javascript - 在 ES6 类中使用 EventEmitter

swift - 如何在 Swift 中子类化自定义 UIViewController?

jquery - 使用 jQuery val() 更新 KnockoutJS 绑定(bind)文本框