2016-10-22 15 views
0

angleJSコントローラにsocketを使用してデータを取得しています。AngularJs可変スコープoutisde関数

私は下のコードで更新されたlist1変数を使用したいと思いますが、値が ''として来るようにできません。 これは、スクリプトを更新する前、つまり応答を受け取る前にスクリプトでアクセスしようとしているためです。

私の下のコードで変数list1の更新された値を使用できる方法はありますか。

編集1

答えの一つに@Manishシンによって示唆されるように、私は$ rootScope.watch.Itは、上記のコードpeiceの新しい値を反映するが、コードについては、以下を与えられていない試してみました。

$rootScope.peers = []; 
industrysearch.searchindustry(indussymbol).then(function(results) { 
    industrysearch.searchpeers($scope.industrystock[0]._source.industry).then(function(results1) { 
      for (var number_stocks = 0; number_stocks < results1.length; number_stocks++) { 
       $rootScope.peers.push(results1[number_stocks]); 
      } 
     }); 
    }); 
    $rootScope.$watch('peers', function(newVal1, oldVal1) { 
     console.log(newVal1); //prints [] 
    }); 

1つは通常の変数であり、1つは配列として使用されます。他の違いはありません。

編集2

$ watchCollectionは、私は、コードが機能しているmissed.Below配列/コレクションの使用です。

$rootScope.$watchCollection('peers', function(newVal1, oldVal1) { 
     console.log(newVal1); 
    }); 

ありがとうございました!

+0

更新スコープ変数を、あなたは$スコープを使用する必要がありますのための$適用されます()。変更がイベント外で更新される – gyc

+0

$ scope.applyを追加しようとしましたが、動作しませんでした。 socket.on( '引用'、関数(データ){ $範囲$を適用する(関数(){ \t $ rootScope.list1 = angular.fromJson(data.substring(3)); }); //ここからこの変数を使用する関数を呼び出すことはできません }); – Jitesh

答えて

0

$ rootScopeに時計の使用について

$rootScope.$watch('list1', function(newVal, oldVal) { 
//Do Something 
)}; 
+0

更新された質問を確認してください。 – Jitesh

+0

$ watchはここで働いていましたが、更新された値を出力するだけです。ループなどでこの値を変数として使用することはできません。複数の変数があるので、それぞれを$ watchを使用してすべての値を一緒に使用します。 – Jitesh

+0

はい、ここでは$ watchCollectionが最も適しています。$ watchサービスの経験があまりないと思います。 [this](https://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm)は、さまざまな概念を理解するのに役立ちました。また、私の答えを受け入れることができれば幸いです。あなたの最初の質問には十分でした。それでも、幸せに助けてください:) –

0

"$ applyAsync" 試してみてください方法:イベントの内部

$rootScope.list1= ''; 
socket.emit('ticker', symbol); 
socket.on('quote', function(data) { 
    $rootScope.$applyAsync(function(){ 
     $rootScope.list1 = angular.fromJson(data.substring(3)); 
    }); 
}); 
+0

いいえ... applyAsyncが機能しませんでした。 – Jitesh

関連する問題