在呈现视图之前,我在使用角度解析执行微风查询时遇到问题。我试图在用微风渲染视图之前从服务器获取一些数据。我在用着
$routeProvider.when('/countries', { templateUrl: 'App/partials/countries.html', controller: Ctrl, resolve: Ctrl.resolve }).
控制器和服务片段:
function Ctrl($scope, Q, datacontext, countries) {
//...
}
function getCountries(forceRefresh) {
var query = entityQuery.
from("countries").
orderBy("name");
return manager.executeQuery(query).
then(getSucceeded);
}
function getSucceeded(data) {
return data.results;
}
这使我的视图永远不会呈现:
Ctrl.resolve = {
countries: function (datacontext) {
return datacontext.getCountries();
}
}
而如果我创建一个需要更长时间的计时器,它就可以工作。我试过用 $q 包装它,但我似乎无法让它工作。
由于超时,这将呈现视图:
Ctrl.resolve = {
countries: function (datacontext) {
return datacontext.getCountries();
},
delay: function ($q, $timeout) {
var delay = $q.defer();
$timeout(delay.resolve, 6000);
return delay.promise;
}
}
如果有人可以帮助我,那就太好了。我不确定我是否做错了什么,或者 Q 承诺是否存在限制或解决方案轻而易举。