簡體   English   中英

阻止控制器在HTTP請求完成之前運行?

[英]Prevent controller from running before HTTP request is fulfilled?

$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
    if ($rootScope.carNameMap) {
        _import.stateEvent.changeTitle(toState, toParams, event);
    } else {
        _import.getCompanies.init().then(function(res){ //<-- promise
            _import.stateEvent.changeTitle(toState, toParams, event);
        });
    }
});

如您所見,在我的$stateChangeStart我檢查是否已經創建了carNameMap ,如果不是,則運行一個發送HTTP請求並返回carNameMap的服務。

但是,當我有一個遠程數據庫時,我的控制器會在http request結束之前運行。

如何防止控制器在HTTP請求完成之前運行?

您應該在config塊中檢查angularJs在$ routeProvider中提供的解析功能:

app.config(function ($routeProvider) {
  $routeProvider
    .when('/',
    {
      templateUrl: "app.html",
      controller: "AppCtrl"
      resolve: {
        foo: function ($q) {
            //your logic goes here, and then your controller will receive an "foo" parameter.
        }
      }
    }
  )
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM