Как сохранить элемент DOM в Mithril, через перерисовки

Я хотел бы выяснить, в Mithril, какова наилучшая практика для сохранения элемента DOM при перерисовке.

У меня есть iframe, который содержит ссылку на naviagtion в качестве контента. Мне нужно сохранить этот iframe через перерисовки Мифрила.

Я пробовал следующее решение, в котором iframe рендерится с его redraw.stategy, установленным на 'none' в функции контроллера компонента.

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..? Или есть другой подход к достижению этого?

Спасибо.

2 ответа

В вашем случае вы можете использовать keyатрибут для сохранения элемента iframe. Он соединяет DOM-узлы с vDOM-узлами. Таким образом, даже если они меняют положение, узлы сдвигаются на месте и не восстанавливаются.

смотрите здесь для более подробной информации

Я изменил порядок элементов-братьев, где iframe добавлялся в виртуальный DOM. Это вызывало перерисовку двигателя diff.

Изменение порядка отображения элементов DOM решило мою проблему.

Другие вопросы по тегам