2016-03-31 9 views
0

私は認証とホームの2つのモジュールを持っています。彼らは同じ名前のコントローラを持っています。モジュール認証のコントローラから。どのように可能ですか?anglejsに他のコントローラからの値を表示する方法は?

+0

[Angularjsコントローラ間でデータを共有する]の可能な複製(http://stackoverflow.com/questions/18227090/angularjs-sharing-data-between-controllers) –

答えて

2

多くの方法があります。私はapp.factory('dataFactory' , func(){..})get/setのデータをそこに作り、あなたの値を任意のモジュールでアプリケーションから取り出すことを好むでしょう。

app.factory('testFactory', function(){ 
     var _name = ''; 
    return { 
     getName: function(text){ 
      return _name; 
     }, 
     setName: function(name){ 
      _name = name; 
     } 
    }    
}); 

の作業Fiddle

はそれがお役に立てば幸いです。

+0

私の質問は$ scopename = Adminを設定して{{$ scopename}}のようにホームページから呼び出すと、上記のコードを変更する必要がありますか? – Sherin

+0

何もありません。あなたの 'homeController'であなたの名前変数を取り出すために' testFactory.getName() 'を呼び出さなければなりません。これを参照してください[更新されたフィドル](http://jsfiddle.net/jsalaat/k3phygpz/872/) –

0

代わりに共有サービスを使用して値を返し、コントローラ内でそのサービスを依存性として注入することができます。

angular.module('yourApp') 
    .value("username", "Jon") 
    .controller("index", ["$scope", "username", function($scope, username) { 
     $scope.username = username; 
    }]); 

や工場のレシピを使用することにより:

angular.module('yourApp') 
    .factory("username", function(){ 
     var value = 'John'; 
     return { 
     get: function(){ 
      return value; 
     }, 
     set: function(newName){ 
      value = newName; 
     } 
     } 
    }) 
    .controller("index", ["$scope", "username", function($scope, username) { 
     $scope.username = username.get(); 
    }]); 

この値は、あなたは、あなたが見て手動で作成した時計を使用する必要はありません、オブジェクトとリターン参照として値を保存することができ、動的になる場合値が変更された場合:

angular.module('yourApp') 
    .factory("username", function(){ 
     var username = { 
      value: 'John' 
     }; 
     return { 
     get: function(){ 
      return username; 
     }, 
     set: function(newName){ 
      username.value = newName; 
     } 
     } 
    }) 
    .controller("index", ["$scope", "username", function($scope, username) { 
     $scope.usernameObj = username.get(); 
    }]); 

とビューで:

{{usernameObj.value}} 

親スコープに値を保存することで、$scopeのプロトタイプ継承を使用して、これを行うこともできます。

関連する問題