KnockoutJs Computed - '不是函数'

时间:2014-02-03 09:34:19

标签: 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 : 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尚未就绪?有没有可能的解决方案。对不起,我不清楚这里的问题。感谢。

2 个答案:

答案 0 :(得分:1)

您获得的问题与调用时的上下文和this值有关。我们强烈建议<{1>}视图模型中使用直接this。而是创建额外的self字段,该字段将在对象创建时初始化。

knockout

似乎你在没有完整代码的情况下使用var self = this; ... tirepressure : ko.computed(function(){ var selecV = self.selectedVehicle(); 弄乱了某些内容,无法找到根本原因。我已经更新了一下,一切似乎都运转良好:

ViewModel

答案 1 :(得分:0)

你有类型,应该是:

 this.selectedVehicle()//not this.selecttedVehicle()