对象#<scope>错误</scope>

时间:2015-02-03 23:55:39

标签: angularjs ionic

我在控制器中调用以下函数:

              try
              {
                  alert('it works!');
                  $scope.insert('John', 'Doe');
              }
              catch(err)
              {
                  alert('err=' + err);
              }

 $scope.insert = function(firstname, lastname) {
        var query = "INSERT INTO people (firstname, lastname) VALUES (?,?)";
        $cordovaSQLite.execute(db, query, [firstname, lastname]).then(function(res) {
            console.log("INSERT ID -> " + res.insertId);
        }, function (err) {
            console.error(err);
        });
    }

当我运行它时,有时它会工作并添加数据,有时我会收到以下错误:

err=TypeError: Object #<Scope> has no method 'insert'

我已经看到这个错误很常见,但我没有找到适用于此示例的答案,因为它实际上有时插件有效。

2 个答案:

答案 0 :(得分:1)

由于您使用表达式来声明函数,因此在定义函数之前调用$scope.insert(),因此您需要在try catch块之前移动函数插入定义。

但是,如果您将插入函数定义为

function insert(firstName, lastName) { ... }

函数insert将在try catch块之前定义,即使我们不更改其序列。

答案 1 :(得分:0)

似乎我在宣布后只是移动了$scope.insert('John', 'Doe');,现在我再也没有得到错误:)。这很容易解决!