0

在我们的项目中,我们将 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”,但这不是我想要的。

4

1 回答 1

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 的实际形状,并且您的情况不应该造成任何障碍(尽管我很想知道您是否遇到任何这样做的错误) .

于 2013-11-08T11:26:31.363 回答