вызов render() после teardown() не отображает данные списка

У меня есть список опций меню, и каждый пункт меню имеет свой собственный экземпляр 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 и отображает только свойство имени, но было отображено при первоначальном вызове.

Пожалуйста, помогите мне исправить это.


person Exception    schedule 23.07.2014    source источник


Ответы (1)


Просто для справки: ответ на вопрос был дан на GitHub.

teardown() — это необратимый вызов, который полностью уничтожает ractive экземпляр. Вам нужна функция detach(), которая удалит экземпляр ractive из DOM, но не уничтожит его. Вы можете использовать его позже, позвонив по номеру insert().

person Martin Kolárik    schedule 25.07.2014