javascript - KnockoutJs 计算 - 'Is not a function'

标签 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还没有准备好?有没有可能的解决办法。抱歉,我不明白这里的问题的每一个细节。谢谢。

最佳答案

您遇到的问题与调用时的上下文和 this 值有关。强烈建议避免knockout View 模型中直接使用this。相反,创建额外的 self字段将在对象创建时初始化。

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()); 

关于javascript - KnockoutJs 计算 - 'Is not a function',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21523745/

相关文章:

javascript - 如果键有多个单词,如何从 Firebase Realtime DB 查询数据?

javascript - Node.js - 如何从文件读取数据并将输出集成到变量中

jquery - 使用简单表单自定义 CSS

javascript - 如何使用挖空更改跨度文本内容

javascript - jQuery .css() 中的 CSS 框阴影

javascript - 将 props 传递给 React 组件的最简洁方法?

javascript - 选择一个选项时的 jquery addClass 和 removeClass

javascript - 阻止 onClick 函数

jquery - 宽度自动不更新与挖空文本绑定(bind)

knockout.js - 如何从 Knockout.JS 中的依赖可观察对象取消下拉列表的 'change' 事件?