2015-05-29 1 views
0

Я использую область Marionette для отображения шаблонов на основе пользовательского ввода радио: (текст/файл). Вот мой itemviewMarionette prevent region destroy

var fileTemplateView = Marionette.ItemView.extend({ 
     template : "#file-upload-template" 
    }); 

и область определяется как

regions : { 
      composeRegion : "#compose-region", 
     } 

и события объявлен

events : { 
    "click #msg-input-type input:radio" : "changedRadio" 
    } 

и функции триггера событий является

changedRadio : function(evt) { 
      var self = this; 
      var checkedObject = evt.currentTarget; 
      console.log('Radio Change Event'+checkedObject.value); 

      if (checkedObject.value === "file") { 
       if (self.fileView === undefined) { 
        self.fileView = new fileTemplateView(); 
       } 
       this.composeRegion.show(self.fileView, { preventDestroy: true }); 
      } else if (checkedObject.value === "text") { 
       if (self.textView === undefined) { 
        self.textView = new textTemplateView(); 
       } 
       this.composeRegion.show(self.textView, { preventDestroy: true }); 
      } 

Но preventDestroy метод может не работать, как определено, когда шаблон сбрасывается каждый раз, когда происходит событие радио.

Ваша помощь приветствуется.

+0

Вы пытаетесь показать представление в регионе без повторного просмотра? – Vic

+0

@ Vic Yup. Мой случай, когда 1) TextBox и 2) UploadFile - это доступные опции, если в случае, если пользователь переключается с одного варианта радиосвязи на другой и возвращается, он не должен потерять введенный текст или загрузить путь к файлу (имя), как в обычном html. –

+0

У меня была аналогичная проблема раньше, см .: http://stackoverflow.com/questions/19496732/backbone-marionette-region-show-without-render – Vic

ответ

0

Опция preventDestroy предотвращает разрушение открытого объекта. Это не означает, что в следующий раз, когда он будет показан, он не будет повторно отображаться. Убедитесь, что вы сохраняете состояние представления, чтобы его можно было правильно восстановить в следующий раз.

+0

Спасибо @Jacob. Как вы видели в коде, состояние регионов создается только в том случае, если оно не существует (неопределено). Если я ошибаюсь, вы можете предоставить мне пример кода, который может сэкономить мое время :) –