在我们的项目中,我们将Ractive与Backbone一起使用。 Backbone.View有一个“setElement”方法,它基本上设置了Backbone.View的el属性,从而允许将View附加到DOM的不同元素。 我想知道Ractive对象是否有类似的功能。 简单地改变Ractive对象的el属性并不成功。
var oRactive = new Ractive(
{
"data": someData,
"el": someDomElement,
"template": someTemplate
});
// ... after doing some other stuff we'd like to set oRactive do a different el
// this.doesn't do the trick
oRactive.el = someOtherDomElement;
// this puts the renderedHTML in our DOM element but binding doesn't work
$(someOtherDomElement).html(oRactive.renderedHTML());
上述不起作用我并不感到惊讶。问题是:有没有办法让它发挥作用或通常是不可能的?
我知道我可以将oRactive.el附加到“someOtherDomElement”,但这不是我想要的。
答案 0 :(得分:0)
这不是Ractive目前支持的内容,尽管将来可能会支持。您可以尝试执行以下操作:
frag = document.createDocumentFragment();
// move contents into the document fragment...
while ( oRactive.el.firstChild ) {
frag.appendChild( oRactive.el.firstChild );
}
// ...then into the DOM
someOtherDomElement.appendChild( frag );
// update oRactive.el so oRactive.find() still works
oRactive.el = someOtherDomElement;
Ractive存储对单个节点的引用 - 在大多数情况下,它不关心DOM的实际形状,并且您的情况不应该构成任何障碍(尽管我有兴趣知道您是否遇到任何错误这样做。)