2014-07-23 63 views
0

我有菜單選項列表,每個菜單項都有自己的具有不同模板但具有相同共享數據的Ractive實例。當每個選擇被更改時,我在呈現視圖實例上調用teardown(),在當前選擇的Ractive實例上調用render(domElement)在拆卸()後調用render()不會顯示列表數據

一個示例如下所示,並且都遵循相同的結構。

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列表數據,只顯示名稱屬性,但在首次調用時呈現。

請幫我解決這個問題。

回答

2

僅供參考,該問題被回答了GitHub

teardown()是一個不可逆的通話完全破壞ractive實例。你想要的是detach()函數,它將從DOM中刪除ractive實例,但不會將其銷燬。您稍後可以通過撥打insert()來使用它。