2016-04-28 14 views
0

私はソケットからデータを聞く必要があります。 Chromeは、この機能を起動:angularJSソケットから受信したデータを受信する

chrome.sockets.tcp.onReceive.addListener(function(info) { 
    console.log(info); 
}); 

は、私は私の角度controllは、その情報を取得したいです。 私はこれを行う場合:

chrome.sockets.tcp.onReceive.addListener(function(info) { 
    $scope.$broadcast("newData", info.data); 
}); 

$scope.$on("newData", function (event, data){ 
    console.log(data); 
    $scope.text = data; 
}); 

テキストモデルが更新されますdosen't。

サイクルを更新し、適用機能を使用しない方法はありますか?

私は$ watchを使ってみましたが、私はdidentが成功しました。

+1

'$ scope。$ apply()'を試したことがありますか?なぜそれを使いたくないのですか? – Patrick

+0

サイクルがまだブロックされているので、他の機能に追加する必要があります。 これは正しい方法であり、他の方法がない場合を除きます。 – JoeBoy

+0

が適用されます*ビューを更新する*方法です。それをブロックするとどういう意味ですか?それを '$ timeout(function {){$ scope.text = data;});'に追加して代わりに「できるだけ早く」実行することができませんでした? – Patrick

答えて

0

データを保存する場所を変更すると、バインディングは期待どおりに機能します。 $ scopeオブジェクトのプロパティを更新するのではなく、レベルを1レベル深くします。

$scope.values.text = data; 

値オブジェクトの作成を含むようにコントローラを更新してください。

// in controller 
$scope.values = { 
    data: '' 
}; 
関連する問題