我尝试在定义状态时使用解析来加载 View ,然后再从 SQLite 数据库加载数据。
当前:ui-router状态
.state("menu", {
templateUrl: "templates/menu.html",
controller: "MenuCtrl",
url: "/menu",
resolve:{
simpleObj: function(){
return {value: 'simple!'};
},
promiseObj: function($cordovaSQLite){
query = "SELECT id FROM reports WHERE progress_status<2";
$cordovaSQLite.execute(db, query, []).then(function(res) {
var pendingList = [];
for (var i = 0; i < res.rows.length; i++) {
pendingList.push(res.rows.item(i).id);
}
return pendingList;
});
}
}
})
Controller
angular.module('starter.controllers').controller('MenuCtrl', function($scope, promiseObj) {
console.log(JSON.stringify(promiseObj));
});
但是这段代码给了我一个无限的摘要循环。
我通常让数据库在服务中执行代码(给出相同的结果),但出于测试目的已内联移动
谁能告诉我如何正确地做到这一点?
更新:
错误消息如下:
02-04 12:07:03.520: D/CordovaLog(7773): file:///android_asset/www/lib/ionic/js/ionic.bundle.js: 第 19387 行:错误:[$rootScope:infdig ] 达到 10 $digest() 迭代。正在中止!
02-04 12:07:03.520: D/CordovaLog(7773): 观察者在最近 5 次迭代中被触发:[]
02-04 12:07:03.520: D/CordovaLog(7773): http://errors.angularjs.org/1.3.6/ $rootScope/infdig?p0=10&p1=%5B%5D
最佳答案
如果您的应用程序中发生任何错误,则可能会发生这种情况(在我的例子中,我依赖于 angularfire。但我忘记将 firebase.js 包含到我的应用程序中)。 由于您使用的是解析,因此您不会看到实际的错误,并且会收到此无限摘要错误。
根据我的经验,我猜测您的应用程序中存在一些错误,导致解析无法执行。
关于javascript - Angular ui-router 解析 promise 提供无限摘要循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285100/