【问题标题】:Calling an object's function - Undefined is not a function [duplicate]调用对象的函数-未定义不是函数[重复]
【发布时间】:2014-08-11 23:08:04
【问题描述】:

我试图从另一个函数调用对象的函数,但出现“未定义不是函数”错误。我认为有一些愚蠢的错误,但我无法弄清楚。

function dataProvider() {

    var self = this;

    self.loadData = ko.computed(function(){

        var data = new Data(self.getJson().data); //here comes the error
        ...


    });

    self.getJson = function(){
        if(typeof jsonVar !== 'undefined')
            return jsonVar;
        else {
            ...
        }


    };

}

已定义 jsonVar,它是一个有效的 JSON。数据是一个对象,但 self.getJson() 不起作用。

编辑: 这与调用私有或公共方法无关。问题是我不能调用对象的方法。

【问题讨论】:

  • 您确定错误发生在该行代码上吗? ko.computed 呢?这真的定义了吗?无论如何,尝试在关键代码行之前添加一些日志以进行调试,例如console.log(self.getJson);
  • 我真的看不出与“重复”问题的联系。
  • 感谢您的回复,是的,它在代码的确切行上。你是对的,“重复”的问题是关于别的事情,我投票支持重新开放,
  • 我想我刚刚找到了问题所在。函数 loadData 在 getJson 函数之前初始化,所以我不得不重新排序这些函数以使其工作。谢谢大家的回复。

标签: javascript function object knockout.js


【解决方案1】:

你应该这样尝试

self.loadData = ko.computed(function(){
    var json = self.getJson()
    if(json){
        var data = new Data(json.data);
    }
});

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 2016-11-13
    • 2013-12-17
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多