KnockoutJS 通过 ko.utils.extend 继承功能

KnockoutJS Inheriting functionality via ko.utils.extend

本文关键字:继承 功能 extend utils 通过 ko KnockoutJS      更新时间:2024-03-15

我正在尝试将功能从父视图模型继承到子视图模型,如下所示:

function ParentVM() {
    var self = this;
    self.MyFunc = function () {
        console.log(self.SomeVar);  // this logs "undefined"
    }
}
function ChildVM() {
    var self = this;
    ko.utils.extend(self, new ParentVM());
    self.SomeVar = "hello";
}

但是,当调用MyFunc时,SomeVar是未定义的。

如果有人为此苦苦挣扎,我在 KnockoutJS 框架之外找到了解决方案:

function ParentVM() {
    var self = this;
    self.MyFunc = function () {
        console.log(self.SomeVar);
    }
}
function ChildVM() {
    var self = this;
    ParentVM.apply(self); // this instead
    self.SomeVar = "hello";
}

您可能希望在MyFunc中使用this而不是self。按照现在的编写方式,MyFunc将始终使用设置为新ParentVM实例this值的self