サーバーは、アプリの状態の変更を送信できます。私のアプリがそのような変更を受け取ると、次の関数が呼び出されます:(実際のアプリコードでは、この関数はグローバルスコープに含まれていません)
function(message){
data = window.JSON.parse(message.data);
console.log(data);
for(element in data){
if(element[0] == "_"){continue;}
$scope.state[element] = data[element];
}
}
また、状態オブジェクトのクローンを作成し、操作が完了したらスコープにアタッチして戻すことで、これを実行しようとしました。
クローン関数は次のようになります。
var clone = (function(){
return function (obj) { Clone.prototype=obj; return new Clone() };
function Clone(){}
}());
そして、データを受信する私の関数は次のようになります。
function(message){
data = window.JSON.parse(message.data);
console.log(data);
var cloned = new clone($scope.state);
for(element in data){
if(element[0] == "_"){continue;}
cloned[element] = data[element];
}
$scope.state = cloned;
}
これをテストするための要素がコントローラーにありました。
<div ng-controller='MainController'>
{{ state | json}}
</di>
そしてそれはただ更新されていません。
バインディングが機能し続けるように、事前に名前がわからないプロパティを追加/変更する別の方法はありますか?