Javascript 计算出的淘汰率-';不是一个函数';

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 :

基本上,我在JS中获得了以下代码片段:

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不是功能”:(请显示整个视图模型)。