AngularJS分配不同的参数和函数

时间:2014-07-27 11:12:06

标签: javascript sql angularjs

也许这不是一个AngularJS问题,但我想我要对此有所了解,以了解我在这里做错了什么。你能帮助我朝正确的方向发展吗?我试过这个超过3个小时并且感到抑郁。 : - (

我有一个函数,我用其他参数传递我的SQL查询。该功能应尽可能灵活。

prepareQuery('SELECT name FROM Lists WHERE id=(?)', [$scope.listId], listnameResultHandler(), defaultErrorHandler());
prepareQuery('SELECT * FROM Products', [], defaultResultHandler(), defaultErrorHandler());

解释一下:

  1. param:SQL查询
  2. param:values绑定到查询
  3. param:成功函数,如果可以查询
  4. param:错误功能,如果有问题
  5. 现在这里是prepareQuery-function:

    function prepareQuery(query, params, successHandler, errorHandler) {
        $scope.db.transaction(function(tx){
            tx.executeSql(query, params, successHandler, errorHandler);      
        }, errorCB); 
    }
    

    问题是我总是得到defaultErrorHandler()的答案。

    function defaultErrorHandler(err) {
      alert("Error processing SQL: " + err.code);
    }
    

    错误总是说:未定义

2 个答案:

答案 0 :(得分:2)

你需要传递函数指针,而不是实际调用它们。 删除函数名defaultResultHandler

后的括号
prepareQuery('SELECT name FROM Lists WHERE id=(?)', [$scope.listId], listnameResultHandler, defaultErrorHandler);
prepareQuery('SELECT * FROM Products', [], defaultResultHandler, defaultErrorHandler);

答案 1 :(得分:1)

我认为问题在于你实际上是在调用错误处理程序而不是仅仅将其传递给prepareQuery - 函数 - 并且因为你在没有参数的情况下调用它,所以错误本身是未定义的。试试这样:

prepareQuery('SELECT name FROM Lists WHERE id=(?)', [$scope.listId], listnameResultHandler, defaultErrorHandler);
prepareQuery('SELECT * FROM Products', [], defaultResultHandler, defaultErrorHandler);