在用户进入 AngularJS 应用程序的下一页之前,我会进行自定义调用以检索一些数据。我使用 AngularJS promise
成功实现了这一目标app.config(['$routeProvider', function ($routeProvider) { $routeProvider
.when("/", {templateUrl: "partials/home.html", controller: "PageCtrl",
resolve: {delay: myFunction} })
...
var myFunction = function($q, $timeout){
var defer = $q.defer();
myCustomAjaxCall({
success: function() {
defer.resolve();
},
error: function() {
defer.reject('Reject error');
}
});
return defer.promise;
};
注意myCustomAjaxCall
功能。我必须按原样使用它。它会调用并在成功时运行回调。这反过来解决了我的承诺。
此myCustomAjaxCall
函数尝试为新视图操作DOM。但是, promise 在呈现新视图之前已解析。当视图已经更改并准备好进行DOM操作时,它是路由器的 routeChangeSuccess
方法。然而,对于我的情况来说,为时已晚,因为在渲染新视图之前,DOM正试图被操纵。
在承诺解决执行期间,您是否建议遵循操作新视图的解决方案?
答案 0 :(得分:0)
您可以在defer.resolve中执行代码。你试过吗?
defer.resolve(function() {
// your code
})