2017-09-16 47 views
0

內回調方法在我的應用程序中使用angularJS我。我誣陷了一切,它運作良好。但我唯一關心的是我想在加載這個內容之前調用一個ajax方法。因爲這個配置數據對我的應用程序來說非常重要。在這個迴應後,只有我的申請必須工作。如何寫AngularJs配置方法

如果有人有想法的手段請建議。提前致謝。

+0

參考此鏈接https://docs.angularjs.org/api/ng/service/$q – Vignesh

回答

0

可以在一對夫婦的方式做到這一點。您可以在引導應用程序之前執行您的請求,也可以在您的基本路線配置中使用resolve

引導(首選)

而不是使用ng-app指令自舉你的應用程序在你的HTML文件,您可以運行以下命令:

import AppComponent from './app.component'; 

function Bootstrap() { 
    bootstrap(document, ['app'], { 
    strictDi: true, 
    }); 
} 

const app = angular 
    .module('app', [ 
    uiRouter, 
    ]) 
    .component('app', AppComponent); 
    .name; 

function getConfig() { 
    const initInjector = angular.injector(['ng']); 
    const $http = initInjector.get('$http'); 

    return $http.get('/api/config') 
    .then(response => response.data); 
} 

getConfig() 
    .then((res) => { 
    angular 
     .module(app) 
     .config(res); 

    bootstrap(); 
    }); 

路由解決

我建議你使用角-ui路由器版本1.這將允許你打電話resolve功能,這是加載任何組件之前執行的功能。

function appConfig($stateProvider) { 
    $stateProvider 
    .state('app', { 
     url: '/', 
     component: 'application', 
     resolve: { 
     config: (applicationService) => { 
      return applicationsService.getConfig(); 
     }, 
     }, 
    }) 
} 

當你的應用程序加載根/,它會調用config決心功能,將數據返回到控制器內this.config屬性。

做這種負荷,當組件數據依賴關係,但不是最好的,如果你加載應用程序的配置,因爲並不是所有的用戶都通過訪問根頁開始是好的。 (不過,如果所有頁面都將application狀態的兒童會工作。