WebSocketからの新しいデータが別のフレームで受信されたときに角度テーブルを作成する必要があるparent.postMessage( "printComments"、 "*" 「):イベントに応答してデータがロードされたときにアンロード角度テーブルが機能しない
var app = angular.module('myapp', []);
var printOperation;
function GetFromLocalStorage(key) {
var items = localStorage.getItem(key);
console.log(items);
if (items === null) {
console.log("item null");
return null;
} else {
if (typeof items != "string") {
items = JSON.stringify(items);
}
return items;
}
}
app.controller('MyCtrl',
function ($scope) {
$scope.printComments = function() {
//$scope.obj=GetFromLocalStorage("AllComments");
$scope.obj = [{
"nome": "first",
"status": 1,
"testo": "Rottura rullo 1!!!"
}, {
"nome": "second",
"status": 0,
"testo": "Rottura rullo fsdfsf!!!"
}];
console.log("ricevo evento e ricarico tabella");
console.log($scope.obj);
};
console.log("assegno print operation");
printOperation = $scope.printComments;
printOperation();
}
);
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
console.log("ricevo messaggio");
printOperation();
}, false); \t \t
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-controller="MyCtrl" ng-app="myapp">
<table ng-table="commentsTable">
<tr ng-repeat="item in obj track by $index">
<td class="plantCell">{{item.nome}}: </td>
<td class="statusCell">{{item.status}}</td>
<td class="statusCell">{{item.testo}}</td>
</tr>
</table>
</div>
私は内部スコープ機能printOperationを呼び出す場合は私がイベント、テーブルを受信したときは逆に、私はそれを呼び出す場合は、テーブルが正しく更新され、は更新されていない。 SwiftやJavaのプログラムであれば、私はバックグラウンドスレッドだと思うでしょう.Javascriptにそのような概念がありますか?メインスレッドにはどうやって来ますか?
私はあなたがそれを実行なっている間に定義されていない角度外printOperation()以来、コールバックを使用することがあると思う:これは、すべての種類の提案を集める作業溶液です。ですから、どういうわけか、角度実行が終了するのを待たなければなりません。 – Vivz
いいえ、printOperation関数内のコンソールメッセージは実際に出力されるので、ロードされるだけでなく実行されます。これは、イベントが送信されたときにイベントがかなり遅れて到着している間に、テーブルがロードされるとすぐにスコープ関数が実行されるので非常に自然です。 –
printOperation()を配置してから実行されます。角度の範囲内にある。それを外に置いてみると、私が言っていることを理解することができます。 – Vivz