【发布时间】:2015-12-27 09:33:02
【问题描述】:
在用户转到我的 AngularJS 应用程序的下一页之前,我进行了自定义调用以检索一些数据。我通过 AngularJS 承诺成功实现了这一目标
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 试图在新视图呈现之前被操纵。
在promise resolve 执行期间,您是否建议遵循任何解决方案来操作新视图?
【问题讨论】:
标签: javascript angularjs dom angular-promise