我正在尝试将父视图模型中的功能继承到子视图模型,如下所示:
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
未定义。
答案 0 :(得分:10)
如果有人在努力解决这个问题,我在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";
}
答案 1 :(得分:5)
您希望在this
中使用self
代替MyFunc
。现在编写方式MyFunc
将始终使用self
,this
设置为新ParentVM
实例的{{1}}值。