2013-05-08 41 views
0

我正在使用Marionette嘗試渲染問題列表。每個問題都可以有一個問題類型的選擇列表,這些問題類型也將來自服務器。我寧願將這個列表保留在json的頂層,而不是每個問題上。有沒有什麼方法可以循環使用ItemView中的問題,但仍然可以訪問模板中的問題類型?在Marionette中選擇列表CompositeView

我可以做到這一點作爲一個大型模板,每次重新呈現,但寧願避免這種情況。

JSON:

var json = { 
     questions: [ 
      { id: 1, questionType: "FreeText", label: "What is your name?" } 
     ], 
     questionTypes: [ 
      { label: "Free Text", qtype: "FreeText" }, 
      { label: "Single Select", qtype: "Select" }, 
      { label: "Multi Select", qtype: "MultiSelect" } 
     ] 
    }; 

模板:

{{#each questions}} 
       <div class="question-editor"> 
        <button class="remove-question" data-id="{{this.id}}">X</button> 
        <label for="QuestionType">Question Type:</label> 
         <select name="QuestionType"> 
          {{#each ../questionTypes}} 
           <option value="{{this.qtype}}" {{#isOptionSelected ../questionType this.qtype}} selected="selected" {{/isOptionSelected}}>{{this.label}}</option> 
          {{/each}} 
         </select> 
         <br /> 
         <label for="Label">Label:</label> 
         <input type="text" name="Label" value="{{this.label}}" /> 
       </div> 
      {{/each}} 

回答

0

可以用提線木偶的CompositeView中。

從木偶文檔

ItemView = Backbone.Marionette.ItemView({ 
    initialize: function(options){ 
    console.log(options.foo); // => "bar" 
    } 
}); 

CollectionView = Backbone.Marionette.CompositeView({ 
    itemView: ItemView, 

    itemViewOptions: { 
    foo: "bar" 
    } 
}); 

可以通過questionTypes作爲itemViewOptions每一行

相關問題