Angular ui-router resolve promise给出了无限的摘要循环
Angular ui-router resolve promise gives infinite digest loop
我正在尝试在加载视图之前从我的SQLite数据库加载数据,在定义状态时使用solve。
当前:ui 路由器状态
.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;
});
}
}
})
控制器
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。但是我忘了将火力基地.js包含在我的应用程序中)。由于您使用的是解析,因此您不会看到实际错误,并且会收到此无限摘要错误。
根据我的经验,我猜测您的应用程序中存在一些错误,导致无法执行解析。
你应该从你的服务返回一个承诺,然后你可以在控制器中访问它。解决 UI 路由器文档中的承诺
promiseObj: function($cordovaSQLite, $q) {
var deferred = $q.defer();
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);
}
deferred.resolve(pendingList);
});
return deferred.promise;
}
控制器
angular.module('starter.controllers').controller('MenuCtrl', function($scope, promiseObj) {
//here the promise get available
$scope.promiseObj = promiseObj;
$scope.promiseObj.then(function(data){
$scope.pendingList = data; //get pending here
});
});
这可能对您有所帮助。谢谢。
相关文章:
- 使用滚动溢出-x进行无限循环
- 从index.html调用函数,该函数无限循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- 如何在不进入无限循环的情况下将网站重定向到Facebook画布URL
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- jQuery无限循环,动画化许多项目
- 如何避免试图用php+jquery显示php起始页的无限循环
- 6502仿真增强型基本无限循环$C000至$E0ED
- Angular ngRoute导致无限循环和堆栈溢出
- Jquery:无限循环和暂停
- 数组数组:无限循环
- MeteorJS使用流星调用和流星方法时的无限循环
- 如何无限循环数据集字符串
- jquery在无限循环中运行
- 遍历对象会导致无限循环
- 为什么内部Javascript循环会阻止外部循环中断(即无限循环)
- 角度编译指令似乎进入了无限循环
- 显示随机数js的无限循环
- 无限循环一组图像