自分のサイトのタイトル、サイトの説明などを取得するためにウェブアプリケーションがhttpリクエストを行う必要があるとします。これらの変数はすべてのページに共通であるため、ユーザーがサイトに入るたびにそれらの変数を要求するのが理にかなっています。angularjsのすべてのルートに対してhttpリクエストを作成する場所はどこですか?
質問はどこで行われますか?ランブロック?または、これらのタスクを実行するルートコントローラを作成するには?
自分のサイトのタイトル、サイトの説明などを取得するためにウェブアプリケーションがhttpリクエストを行う必要があるとします。これらの変数はすべてのページに共通であるため、ユーザーがサイトに入るたびにそれらの変数を要求するのが理にかなっています。angularjsのすべてのルートに対してhttpリクエストを作成する場所はどこですか?
質問はどこで行われますか?ランブロック?または、これらのタスクを実行するルートコントローラを作成するには?
あなたはこれらの2つのアプローチのいずれかを使用できます。
$rootScope
と 使用中の値を格納したい、あなたの状態で、取得するために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;
}
})
コントローラは<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()'
を呼び出します。
私は、ルート(またはメイン)コントローラ –