Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在teardown()之后调用render()不会显示列表数据_Javascript_Ractivejs - Fatal编程技术网

Javascript 在teardown()之后调用render()不会显示列表数据

Javascript 在teardown()之后调用render()不会显示列表数据,javascript,ractivejs,Javascript,Ractivejs,我有一个菜单选项列表,每个菜单项都有自己的Ractive实例,具有不同的模板,但共享数据相同。当更改每个选择时,我将在渲染视图实例上调用teardown(),在当前选择的实际实例上调用render(domElement) 下面是一个示例实例,它们都遵循相同的结构 var View = new Ractive({ template: '#contacts', data: { name: 'Contacts', contacts :

我有一个菜单选项列表,每个菜单项都有自己的Ractive实例,具有不同的模板,但共享数据相同。当更改每个选择时,我将在渲染视图实例上调用
teardown()
,在当前选择的实际实例上调用
render(domElement)

下面是一个示例实例,它们都遵循相同的结构

 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()
它也不会呈现
联系人列表数据,只显示name属性,而是在初次调用时呈现


请帮我解决这个问题。

这个问题的答案是

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