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