2016-07-25 7 views
0

すべての約束が完了したらUIを表示したい。 私は何らかの手順に移りますが、この前にコードを実行します。 私はここで詰まっています。私のtemplateURlは同期して実行されます。 .runメソッドからすべての実行が完了したら、templateUrlを実行する必要があります。以下Angular JsでtemplateUrlを約束する方法

あなたはUI-ルータの解決にコードを置くことができ、私のapp.js

(function() { 
    "use strict"; 
    var app = angular.module("autoQuote", ["ui.router", "ngResource"]); 

    app.config(["$stateProvider", "$urlRouterProvider", function ($stateProvider, $urlRouterProvider) { 
      $urlRouterProvider.otherwise("/"); 

      $stateProvider 
        .state("Cars", { 
         url: "", 
         templateUrl: "/rc1/renderStep/cars" 
        }) 
        .state("Drivers", { 
         url: "/drivers", 
         templateUrl: "/rc1/renderStep/drivers", 
         controller: "renderStepCtrl", 
        }) 
     }]) 
    app.run(["$log", "$rootScope", "$state", "dtoResource", "questionResource", "postDtoFactory", function ($log, $rootScope, $state, dtoResource, questionResource, postDtoFactory) { 
      $log.info('Post DTO on page load.'); 
      $rootScope.$state = $state; 
      dtoResource.rc1LoadDTO() 
        .then(function (data) { 
         $rootScope.AutoQuote = data; 
         postDtoFactory.postDto() 
           .then(function (data) { 
            questionResource.getQuestions($rootScope.AutoQuote.postAutoQuoteObj.SessionInfo.StateCode) 
              .then(function (questions) { 
               console.log('questions', questions); 
               $rootScope.questions = questions; 
               //$rootScope.answers = {PC:12345,VehicleYear_1:2017}; // test code 
               console.log('Obtained questions. Assigned to rootscope'); 
              }) 
           }) 
        }) 
        .then(function() { 
         console.log('This should be printed after the above methods are done  executing'); 
         console.log($rootScope); 
        }) 
       }]) 
}()); 
+0

'resolve'ブロックを使用してください。状態が入力される前にすべての '解決'約束は解決されるでしょう – Phil

+0

ここで何をするか? –

答えて

2

です。

$stateProvider.state('demo', { 
     url: '/demo', 
     template: require('./views/demo.html'), 
     controller: 'DemoController as vm', 
     resolve: { 
     resolvedInfo: [demoService, 
      function (demoService) { 
      //put some code execution 
      return promise; 
      }] 
     } 
    }) 
+0

私はこの解決策のみを書くことができます:{ return promise; } –

+0

@ Greatym.com要件によって異なります。 resolveはコントローラーの前に実行され、コントローラーではインジェクションで使用できます。 – yukuan

+0

私は、ng-appの初期化で実行する必要があるすべてのメソッドを実行しました。ここでは、.run mthosの実行後にロードするUIのみをロードしています。 –

関連する問題