Javascript 计算出的淘汰率-';不是一个函数';
基本上,我在JS中获得了以下代码片段:Javascript 计算出的淘汰率-';不是一个函数';,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,基本上,我在JS中获得了以下代码片段: var pgViewModel = { inited : false, username : ko.observable("", {persist: "login.username"}), password : ko.observable("", {persist: "login.password"}), vehicles : ko.observableArray(), selectedVehicle :
var pgViewModel = {
inited : false,
username : ko.observable("", {persist: "login.username"}),
password : ko.observable("", {persist: "login.password"}),
vehicles : ko.observableArray(),
selectedVehicle : ko.observable(null, {persist: "login.vehicle"}),
tirepressure : ko.computed(function(){
var selecV = this.selectedVehicle();
return selecV.tirepressure_vl + '/' + selecV.tirepressure_vr + '/' + selecV.tirepressure_hl + '/' + slecV.tirepressure_hr + 'bar';
},this),
尝试加载页面时,我收到错误:“this.selectedVehicle()不是函数”。是否因为解析函数时pgViewModel未就绪而发生此问题?有没有可能的解决办法。对不起,我不太明白这里的问题的每一个细节。谢谢。您有一个类型,它应该是:
this.selectedVehicle()//not this.selecttedVehicle()
您遇到的问题与上下文和调用时的
值有关。强烈建议在查看模型时避免直接使用此
。而是创建将在对象创建时初始化的附加字段
var self = this;
...
tirepressure : ko.computed(function(){
var selecV = self.selectedVehicle();
似乎您的ViewModel
有点乱七八糟,没有完整的代码就无法找到根本原因。我对它进行了一些更新,一切似乎都很好:
function pgViewModel() {
var self = this;
self.inited = false;
self.username = ko.observable("", {persist: "login.username"});
self.password = ko.observable("", {persist: "login.password"});
self.vehicles = ko.observableArray();
self.selectedVehicle = ko.observable(null, { persist: "login.vehicle"});
self.tirepressure = ko.computed(function() {
var selecV = self.selectedVehicle();
return selecV.tirepressure_vl + '/' + selecV.tirepressure_vr + '/' + selecV.tirepressure_hl + '/' + slecV.tirepressure_hr + 'bar';
}, self);
};
ko.applyBindings(new pgViewModel());
“TypeError:this.selectedVehicle不是一个函数”这是控制台中显示的确切错误。好的,我尝试了这个。错误更改为:“TypeError:self.selectedVehicle不是功能”:(请显示整个视图模型)。