2016-04-19 2 views
1

自分のサイトのタイトル、サイトの説明などを取得するためにウェブアプリケーションがhttpリクエストを行う必要があるとします。これらの変数はすべてのページに共通であるため、ユーザーがサイトに入るたびにそれらの変数を要求するのが理にかなっています。angularjsのすべてのルートに対してhttpリクエストを作成する場所はどこですか?

質問はどこで行われますか?ランブロック?または、これらのタスクを実行するルートコントローラを作成するには?

+0

私は、ルート(またはメイン)コントローラ –

答えて

3

あなたはこれらの2つのアプローチのいずれかを使用できます。

  1. は、実行ブロックで通話を行い、どこ$rootScopeと 使用中の値を格納したい、あなたの状態で
  2. 、取得するためにresolveを使用しますページのタイトルと詳細、および を参照してください。簡単に使用できるように、ルート状態で解決し、 解決済みの変数を他の子または兄弟ルートの依存として使用してください。

    $stateProvider.state('root', { 
         resolve:{ 
    
         // Example using function with simple return value.   
         promiseObj: function($http){ 
         // $http returns a promise for the url data 
         return $http({method: 'GET', url: '/someUrl'}); 
         } 
        }) 
        .state('sibling',{ 
        controller:function($scope,promiseObj){ 
         $scope.title = promiseObj.title; 
        } 
        }) 
    
0

コントローラは<html>レベルに定義できます。

<html ng-app="app" ng-controller="initCtrl"> 
    <head> 
    <title>{{ Page.title() }}</title> 
... 

サービスを作成します:Pageとコントローラから変更します。

myModule.factory('Page', function() { 
    var title = //Code to get the title 
    .... //Other vars 
    return { 
    title: function() { return title; }, 
    setTitle: function(newTitle) { title = newTitle } 
    ... 
    }; 
}); 

を注入ページおよびコントローラから'Page.setTitle()'を呼び出します。

関連する問題