コントローラ1からコントローラ2にオブジェクトで満たされた配列を送信しようとしていますが、コントローラ2に入るのは空の配列です。私が満たしたものを得る唯一の方法は、私のサービスで静的な配列を作成するときです。データを設定しますコントローラ間でデータを共有するAngularJS
マイサービス
app.service('myData', function() {
this.myData = [];
this.addData = function(data) {
this.myData.push(data);
}
this.getData = function() {
return this.myData;
}});
コントローラ1
app.controller('controller1',['$scope', 'myData', function($scope, myData) {
$scope.addData = function(index, name) {
myData.addData({index: index, name: name});
}}]);
私は質問の多くを発見した答えを探していたときコントローラ2は、この
app.controller('controller2',['$scope', 'myData', function($scope, myData) {
$scope.myData = myData.getData();
$scope.$watch('myData.getData()', function(data){
console.log(data);
});
console.log($scope.myData);}]);
のように見えますほとんど私に似ています。唯一の違いは、静的なサービスを作成するのではなく、私のコントローラから私のサービスを満たすことでした。
私の両方のconsole.logsは空の配列を返します。どうしてこれなの?
あなたがルートスコープまたはのいずれかを使用する必要がありますブロードキャストやイベントのようなコミュニケーション機構 – Rafa
あなたの時計は私にとって少し奇妙なようです。 'data.getData()'の代わりに 'function(){return myData.getData()}'を実行してください –