AngularJS:在Promise被解析后,为新视图操作DOM

AngularJS: Manipulate DOM for the New View Once Promise Is Resolved

本文关键字:新视图 操作 DOM Promise AngularJS      更新时间:2023-09-26

在用户进入我的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。然而,承诺在呈现新视图之前被解析。它是路由器的 routeChangeSuccess方法,当视图已经改变,准备DOM操作。但是,对于我来说,为时已晚,因为DOM试图在呈现新视图之前被操纵。

promise resolve执行期间,您是否建议遵循任何解决方案来操作新视图?

可以延迟执行代码。解决本身。你试过吗?

defer.resolve(function() {
    // your code
})