我在路线中的解析成员上有以下代码:
resolve: {
loadData: function ($q) {
var deferred = $q.defer();
var fbRef = new Firebase("https://myPathToFirebase");
var auth = new FirebaseSimpleLogin(fbRef, function (error, user) {
console.log('resolving. ' + user.id + ', Provider: ' + user.provider);
deferred.resolve();
});
console.log('returning..');
return deferred.promise;
}
}
为了清晰起见,FirebaseSamleLogin中的回调已经过简化 日志记录显示代码按预期运行。用户ID和提供者(facebook)在回调中打印。 我的问题是deferred.resolved()不起作用。代码不会继续运行控制器代码并呈现模板。就好像延迟从未解决过一样。 我有点被困在这里,任何帮助/建议将不胜感激 谢谢
答案 0 :(得分:1)
我认为你可能需要像这样
包装$ apply()中的resolve()var auth = new FirebaseSimpleLogin(fbRef, function (error, user) {
console.log('resolving. ' + user.id + ', Provider: ' + user.provider);
$scope.$apply(function () {
deferred.resolve();
});
});
答案 1 :(得分:0)
如果在@zsong写的$ apply()中包装resolve()但是使用$ rootscope吗?
resolve: {
loadData: function ($q,$rootscope) {
var deferred = $q.defer();
var fbRef = new Firebase("https://myPathToFirebase");
var auth = new FirebaseSimpleLogin(fbRef, function (error, user) {
console.log('resolving. ' + user.id + ', Provider: ' + user.provider);
$rootscope.$apply(deferred.resolve());
});
console.log('returning..');
return deferred.promise;
}
}