2017-03-16 11 views

答えて

2

各コントローラにはそれぞれ$scopeがあります。ページのすべてのコントローラにアクセスする$rootScopeがありますが、これはappモジュールのグローバル変数コンテナと似ているため、これは推奨された方法ではありません。好ましい方法は、カスタムサービスを使用することです。 $ rootScope使用

$rootScope.value = "shared value using $rootScope"; 

これは、それぞれ$root.value$rootScope.valueとして任意のビューまたはコントローラにアクセスすることができます。これはCustomServiceを注入し、その$scopeに取り付ける任意のコントローラにアクセスすることができる

$scope.shareCustom = function() { 
    CustomService.value = "shared value using CustomService"; 
}; 

カスタムサービスを使用

スニペット:

.controller('AnyCtrl', function ($scope, CustomService) { 
    $scope.customService = CustomService; 
}); 

<p>{{customService.value}}</p> 

私は、共有データのこれらの方法の両方を説明するためにPlunker Demoを行いました。

1

あなたなしできません。別のページに移動すると、新しいコントローラが初期化されます。

同じ変数を使用するには、工場/サービスを使用して変数を共有することを検討してください。 $ rootScopeを使うこともできますが、推奨される方法ではありません。

+0

他のページに変更した場合、最初のページの範囲が変更されますか? –

+0

最初のページのスコープはどういう意味ですか?それはありません。その状態に保たれる – Sajeetharan

関連する問題