Как сохранить элемент 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 решило мою проблему.