Javascript 可观察的敲除不是一个函数
我正在尝试一些不同的方法来添加方法到淘汰视图模型,但我遇到了一个我真的不理解的错误Javascript 可观察的敲除不是一个函数,javascript,knockout.js,Javascript,Knockout.js,我正在尝试一些不同的方法来添加方法到淘汰视图模型,但我遇到了一个我真的不理解的错误 function ViewModel() { var self = this; self.foo = ko.observable(null); self.hasFoo = ko.computed(self.getHasFoo); } ko.utils.extend(ViewModel.prototype, { getHasFoo: function () { r
function ViewModel() {
var self = this;
self.foo = ko.observable(null);
self.hasFoo = ko.computed(self.getHasFoo);
}
ko.utils.extend(ViewModel.prototype, {
getHasFoo: function () {
return this.foo() != null;
},
});
var vm = new ViewModel();
当我运行这个程序时,我得到一个错误,说
uncaughttypeerror:this.foo不是一个函数
。我对this.foo的实际值做了一个console.log,它确实是未定义的
。我真的不明白为什么。这里发生了什么?这是因为计算的上下文,这是sintaxko.computed(handler,scope)
请参阅更新this.hasFoo=ko.computed(self.getHasFoo,this)代码>,现在可以在代码段中看到它的工作情况
函数ViewModel(){
var self=这个;
this.foo=ko.observable(空);
this.hasFoo=ko.computed(self.getHasFoo,this);
}
ko.utils.extend(ViewModel.prototype{
getHasFoo:函数(){
返回这个.foo();
},
});
var vm=new ViewModel();
ko.applyBindings(vm)
有福代码>啊,当然。完全忘记了(我的主要语言是c:)。我通常不将“this”传递给ko,而是在内联函数定义中使用自变量进行计算。我以前从未传递过直接函数引用。谢谢