我有菜单选项列表,每个菜单项都有自己的Ractive实例,不同的模板但共享数据相同。更改每个选择后,我在渲染的视图实例上调用teardown()
,在当前选择的Ractive实例上调用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()
时,它不会呈现contacts
列表数据并仅显示名称属性,但在初始调用时呈现。
请帮我解决这个问题。
答案 0 :(得分:2)
仅供参考,问题已在GitHub
上得到解答 teardown()
是一种不可逆的调用,完全破坏了ractive实例。你想要的是detach()
函数,它会从DOM中删除ractive实例但不会破坏它。您可以稍后致电insert()
。