1

Mithril で、再描画後も DOM 要素を保持するためのベスト プラクティスは何かを知りたいです。

コンテンツとして naviagtion へのリンクを含む iframe があります。Mithril の再描画全体でこの iframe を保持する必要があります。

コンポーネントのコントローラー関数で redraw.stategy を「none」に設定して iframe をレンダリングする次のソリューションを試しました。

var iframeComponent = {
     controller: function() {
         m.redraw.strategy("none") 
     },

     view: function() {
              return m('.backpane-container', [
        m('iframe#bpaneId.backpane-frame[frameborder=0][scrolling=yes]', {

          'src': url,
          'config': configureBackPane.bind(this, controller)
        }),

      ]);
     }

ただし、iframe は再描画間で変化しているように見えます。

これはDOM要素を保持する正しい方法ですか..? または、これを達成するための別のアプローチはありますか?

ありがとうございました。

4

2 に答える 2

3

あなたの場合、key-attribute を使用して iframe 要素を保持できます。DOM ノードを vDOM ノードに接続します。したがって、ノードの位置が変わっても、ノードはその場で移動し、再作成されません。

詳しくはこちら

于 2015-11-19T09:28:30.417 に答える
0

iframe が仮想 DOM に追加される兄弟要素の順序を変更しました。これにより、差分エンジンが再描画されていました。

レンダリングされる DOM 要素の順序を変更すると、問題が解決しました。

于 2015-11-11T22:27:28.820 に答える