2016-09-10 9 views
1

Я работаю над базовой сетью, марионеткой, эпоксидной, программой поддерева, и у меня возникают проблемы с отображением одного представления, которое вложено внутри конструктора представления в Render(). Внутри этой функции есть еще 3 вида, но когда вызывается конструктор, я хочу иметь возможность отображать только CustomizationView.Как визуализировать только один вид внутри функции рендеринга эпоксидной смолы

Есть ли способ, которым я могу это сделать?

Это код, который вызывает вид конструктора для SettingsView и делает его внутри CustomerView

render:function(){ 
      //renders all of the settings from the settings inclusion variable 
      var data = this.viewModel.toJSON(); 
      data.customer = this.model.toJSON(); 
      this.$el.html(_.template(tmpl, data, {variable:'data'})); 
      this.ui_settings = new settings.SettingsView({ 
      el: this.$('#vc-customer-settings'), 
      model: this.model.get("_Settings") 
      }); 
      this.applyBindings(); 
     } 

Это функция визуализации, которая находится внутри конструктора settingsView. Я могу прокомментировать представления, которые я не хочу видеть в CustomerView, и он работает, но затем он прерывает остальную часть программы. Есть ли способ, которым я могу просто получить модель CustomizationView при вызове конструктора settings.SettingsView? Я, очевидно, хочу сохранить SettingsView, потому что он содержит много кода, который мне нужен, наряду с CustomizationView.

render:function(){ 
      this.$el.html(_.template(other_settings, {}, {variable:'args'})); 

      this.ui_messages = new LIB.MessageCollectionView({ 
       el:this.$('.messages ul'), 
       collection:this.model.get("_Messages"), 
       parent: this 
      }); 

      this.ui_customizations = new LIB.CustomizationCollectionView({ 
       el:this.$('.other-settings ul'), 
       collection:this.model.get("_Customizations") 
      }); 

      this.ui_increments = new LIB.IncrementCollectionView({ 
       el:this.$('.increments ul'), 
       collection:this.model.get("_Increments") 
      }); 
+0

Просьба прояснить вопрос и разбить образец кода на простейший «рабочий» фрагмент. Удалите из вопроса все остальные ненужные коды. –

+0

Благодарим вас за помощь. Это очень высоко ценится. К сожалению, весь этот код необходим, чтобы отобразить представления, которые я пытался отобразить. –

+1

Просмотрев код, я предположил, что мог бы избавиться от прокомментированного кода. Спасибо, что указали это. :) –

ответ

0

Устранена проблема. Я просто создал новый конструктор под названием adminRender(), а затем внутри этого я вызвал конструктор CustomizationView, используя новый шаблон html для this.$el.html(_.template()). Затем, когда объект класса SettingsView создается внутри CustomerView, я тестировал текущий рабочий каталог и создавал трехмерный оператор, который вызывает соответствующую функцию рендеринга. Это выглядит следующим образом:

  adminRender:function(){ 
       this.$el.html(_.template(other_settings, {}, {variable: 'args'})); 

       this.ui_customizations = new LIB.CustomizationCollectionView({ 
        el:this.$('.other-settings ul'), 
        collection:this.model.get("_Customizations") 
       }); 



       this.listenToOnce(this.model, 'change:Keymap', this.initKeymap); 
       this.listenTo(this.model, 'keypressed', _.bind(this.replaceButton, this)); 
      }, 
      userRender:function(){ 
       this.$el.html(_.template(tmpl, {}, {variable:'args'})); 

       this.ui_messages = new LIB.MessageCollectionView({ 
        el:this.$('.messages ul'), 
        collection:this.model.get("_Messages"), 
        parent: this 
       }); 
       this.ui_customizations = new LIB.CustomizationCollectionView({ 
        el:this.$('.other-settings ul'), 
        collection:this.model.get("_Customizations") 
       }); 

       this.ui_increments = new LIB.IncrementCollectionView({ 
        el:this.$('.increments ul'), 
        collection:this.model.get("_Increments") 
       }); 

Тогда в конструкторе SettingsView я бы назвал соответствующую функцию визуализации, как это:

  var pathName = window.location.pathname; 
      var pathName = "/admin/customers/new" ? view.adminRender() : view.userRender(); 

и теперь он работает !!! Yay :)