我想在Mithril中找到在重绘期间保留DOM元素的最佳做法。
我有一个iframe,其中包含naviagtion的链接作为其内容。 我需要在Mithril的重绘中保留这个iframe。
我已经尝试了以下解决方案,其中iframe正在使用它的redraw.stategy设置为' none'在compoent的控制器功能中。
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元素的正确方法吗?还是有一个 实现这一目标的另一种方法是什么?
谢谢。
答案 0 :(得分:3)
在您的情况下,您可以使用key
- 属性来保留iframe元素。它将DOM节点连接到vDOM节点。因此,即使它们改变位置,节点也会移位到位,不会重新创建。
请参阅here了解更多详情
答案 1 :(得分:0)
我更改了将iframe添加到虚拟DOM的兄弟元素的顺序。这导致diff引擎重绘。
更改呈现DOM元素的顺序解决了我的问题。