0

我有菜单选项列表,每个菜单项都有自己的 Ractive 实例,具有不同的模板但共享数据相同。当每个选择发生变化时,我会调用teardown()渲染视图实例和render(domElement)当前选择的 Ractive 实例。

一个示例实例如下所示,并且都遵循相同的结构。

 var View = new Ractive({
      template: '#contacts',
      data: { 
          name: 'Contacts',
          contacts : dummyData // array data
      }
});

我将它们渲染如下

  var isRendered = false;
  channel.subscribe("menu", function(msg) {
        if(msg === "contacts") {
                contentHolder.innerHTML = "";
            View.render(contentHolder);
            isRendered = true;
        } else {
            if(isRendered) {
                View.teardown();
                isRendered = false;
                console.log(View.get('contacts')); // Here I can see the data.
            }
        }
  });

在第一次render()调用视图中按预期呈现,但在调用之后teardown(),如果我再次调用render()它不会呈现contacts列表数据并且只显示名称属性,但在初始调用时呈现。

请帮我解决这个问题。

4

1 回答 1

2

仅供参考,问题已在GitHub 上回答

teardown()是一个不可逆的调用,它完全破坏了 ractive 实例。你想要的是detach()函数,它将从 DOM 中删除 ractive 实例,但不会破坏它。您可以稍后通过调用来使用它insert()

于 2014-07-25T22:30:21.653 回答