編集: jsFiddle の例はこちら。
をngRepeat
含むディレクティブを生成する がありiframes
ます。
div(ng-repeat='element in elements')
ng-switch(on="element.type")
a-directive(ng-switch-when="something")
another-directive(ng-switch-when="somethingElse")
さて、ディレクティブ内で、次のようにして、何らかのイベントの後にコンテンツを iframe にロードしています。
$iframe[0].contentWindow.d_contents = "html"
$iframe[0].src = 'javascript:window["d_contents"]'
すべてがうまく機能します。
これらの要素の 1 つをモデル (コントローラー内) から削除すると、次のようになります。
elements.remove(object) //using sugarjs, that's not the issue, same behaviour with splice
それに応じて UI が更新されます。つまり、要素が消えます。
問題
これは期待どおりに機能します。
elements.push(ele1)
elements.push(ele2)
.. init iframes inside ele1 and ele2 with content ..
elements.remove(ele2)
結果: ele2
UI から消えele1
ますが、iframe がロードされたままです
これはしません:
elements.push(ele1)
elements.push(ele2)
.. init iframes inside ele1 and ele2 with content ..
elements.remove(ele1)
結果: ele1
UI から消えele2
ますが、iframe は残っていますが、iframe のコンテンツは空に戻り、iframe.load()
起動されます。
ここで何が起きてるの?iframe がリセットされるのはなぜですか?