我在控制器中调用以下函数:
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'
我已经看到这个错误很常见,但我没有找到适用于此示例的答案,因为它实际上有时插件有效。
答案 0 :(得分:1)
由于您使用表达式来声明函数,因此在定义函数之前调用$scope.insert()
,因此您需要在try catch块之前移动函数插入定义。
但是,如果您将插入函数定义为
function insert(firstName, lastName) { ... }
函数insert
将在try catch块之前定义,即使我们不更改其序列。
答案 1 :(得分:0)
似乎我在宣布后只是移动了$scope.insert('John', 'Doe');
,现在我再也没有得到错误:)。这很容易解决!