0
eventlistnerを作成すると、postMessageまで待ってからIframeHeightを更新しますが、直ちに高さが変更されることはありません。 (クリックして、入力ボックスに入力するなど)。ng-styleはeventListnerに基づいて更新されません
$scope.getIframeHeight = function(){
$scope.IframeHeight = "800";
if (!window.addEventListener) {
// IE8 support (could also use an addEventListener shim)
window.attachEvent('onmessage', $scope.handleMessage);
} else {
window.addEventListener('message', $scope.handleMessage, false);
}
};
$scope.handleMessage = function(event){
var origin = event.origin || event.originalEvent.origin; // For Chrome, the origin property is in the event.originalEvent object.
if (origin !== "http://localhost:8060")
return;
console.log('parent received message!: ',event.data);
$scope.IframeHeight = event.data;
};
<iframe class='iframe' id='iframe' scrolling='no' ng-style="{'height': IframeHeight + 'px'}" width="100%"
frameborder='0' ng-src="{{trustSrc(data.IframeSRC)}}">
</iframe>
あなたは$スコープを利用した$適用、です。基本的には、角度範囲のダイジェストサイクルを手動で呼び出すことと同等です。角度変数の外でスコープデータを変更すると、ダイジェストサイクルがトリガされないため、変更は反映されません。ここでは、イベントリスナを角度の可視性にない単純なjavascriptの方法でアタッチしたので、 '$ scope。$ apply'を使ってスコープダイジェストサイクルを手動で呼び出すことができました。詳細については、角度範囲のライフサイクルとその実行方法を調べることができます – Harpreet
@Harpreetおかげさまで私はちょっと角度をつけてコンセプトを弱め始めました。開始できる場所を共有することができれば素晴らしいでしょう – banes