对象 #<Scope> 错误

Object #<Scope> Error

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

              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'

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

看来我只是在声明后移动了 $scope.insert('John', 'Doe');,现在我不再收到错误了:)。这是一个简单的修复!

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

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

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

即使我们不改变它的顺序,函数 insert 也会在 try catch 块之前定义。