これは専門家には非常に明白なそれらの愚かな質問の1つになります。スコープが変更されたときにAngularJSがテンプレート変数を更新しない
データを格納しているコントローラにデータをプッシュしようとしているサービスにデータをプッシュするwebsocketがあります。
データが入ってくると、変数が、UI更新のみを更新している私は、そのデータに対してアクションを実行します
services.factory('Summary', ['$q','$rootScope','$http', '$location', function ($q, $rootScope,$http, $location) {
var Service = {};
Service.dataObj = {};
Service.dataObj.d = {"gello":"goodbye"};
....
function listener(data) {
messageObj = data;
Service.dataObj.d = data;
console.log("Received data from websocket: ", messageObj);
}
})]);
controllers.controller('UserCtrl', ['$scope', 'Summary',
function ($scope, Summary) {
$scope.click = function(){
alert(JSON.stringify($scope.summaryinfo));
}
$scope.summaryinfo = [Summary.dataObj];
$scope.summarygridOptions = {
data: 'summaryinfo'
};
console.log("hello");
}]);
データがで汲み上げ取得し、限り、私は知っていたとして、そのが保存されているので、 Service.dataObjでHTMLテンプレートを指すとオブジェクトが更新されていて置き換えられていないので、ポインタは残っていてオブジェクトは監視されます。
しかし、私はclick()メソッドを実行しない限り、IMはアラートをトリガするだけでUIに影響します。
私には何が欠けていますか?あなたはおそらく$apply()
を使用する必要が
変更を適用するには$ applyを適用してください。 – Daiwei
あなたの質問を見て3分で解決しました!ありがとうbugg_tb! – rastko