导致$ digest的WebSQL查询达到了10次迭代错误

时间:2015-10-03 11:47:56

标签: angularjs cordova web-sql

我在Cordova项目中使用Angular和WebSQL,并且我已经启动了一个新的列表控制器,它将从WebSQL数据库中列出表的结果。

我有一个查询数据库的sqlSvc,如下所示:

service.upc = function(newUpc) {
    var deferred = $q.defer();
    var resolveResults = function (tx, results) {
        deferred.resolve(results.rows);
    }
    var selectUpcs = function() {
        var queryString = "SELECT * FROM UPC";
        service.db.transaction(function (tx) {
            tx.executeSql(queryString, [], resolveResults, rejectWithError);
        });
    }
    deferUntilInit(function () {
        if (newUpc) {
            insertOrReplaceAndSelect(newUpc); //omitted
        } else {
            selectUpcs();
        }
    });
    return deferred.promise;
}

所有控制器都这样做:

var listCtrl = function($scope, sqlSvc) {
    sqlSvc.upc().then(function(result) {
        $scope.list = result;
    });
}
angular.module("RDb").controller("listCtrl", ["$scope", "sqlSvc", listCtrl]);

它与简单的UI视图模板绑定:

<div id="scanList">
    <ul class="list-unstyled">
        <li ng-repeat="scan in list">
            <div>{{scan.upc}} ({{scan.datetime}})</div>
        </li>
    </ul>
</div>

这给了我$ 10 digest迭代到达错误,它似乎是由WebSQL返回其结果的方式引起的。如果我深度复制数据,将resolveResults更改为:

,则错误消失
var data = JSON.parse(JSON.stringify(results.rows));
deferred.resolve(results.rows);

我希望能够让这项服务工作,而无需深入复制它获得的每个结果集。任何人都可以帮助我理解为什么会这样吗?

0 个答案:

没有答案