2013-09-27 3 views
0

Скажите, пожалуйста, как создать шаблоны в Backbone.js, если есть вложенные данные. ПримерШаблон данных на backbone.js

данных:

var questions = [ 
    { 
     id: 0, 
    question: [ 
     { 
      id: 101, 
      text: 'What is your name?', 
     }, 
     { 
      id: 102, 
      text: 'What is your lastname?', 
     }, 
     { 
      id: 103, 
      text: 'What is yout sex?', 
     }, 
     { 
      id: 104, 
      text: 'How old are you?', 
     }, 
    ] 
} 
]; 

И HTML-код для вывода:

<div id="qu_0" class="questions"><div> 
    <p><input type="radio" rel="question" name="question_0" id="i101" value="101" /><label for="i101">What is your name?</label></p> 
    <p><input type="radio" rel="question" name="question_0" id="i102" value="102" /><label for="i102">What is your firstname?</label></p> 
    <p><input type="radio" rel="question" name="question_0" id="i103" value="103" /><label for="i103">What is your sex?</label></p> 
    <p><input type="radio" rel="question" name="question_0" id="i104" value="104" /><label for="i104">How old are you?</label></p> 
    <button type="button" name="next"><b>Answer</b></button> 
</div></div> 

Я понимаю, что я должен получить что-то вроде этого:

<script id="questionTemplate" type="text/template"> 
<div> 
    <p><input type="radio" rel="question" name="question_<%= id %>" id="i<%= q.id %>" value="<%= q.id %>" /><label for="i<%= q.id %>"><%= q.text %></label></p> 
    <button type="button" name="next"><b>Answer</b></button> 
</div> 
</script> 

Но я не» t знать, как отобразить в шаблоне вложенный массив вопросов. Помоги мне, пожалуйста.

ответ

1

Вы можете перебрать массив как это: [? Почему используется «для ... в» с массивом итерационного такой плохой идеей]

<script id="questionTemplate" type="text/template"> 
    <% for(var question in questions) { %> 
     <div id="qu_<%= question.id %>" class="questions"><div> 
     <% for(var q in questions,question) { %> 
      <p><input type="radio" rel="question" name="question_<%= q.id %>" id="i<%= q.id %>" value="<%= q.id %>" /><label for="i<%= q.id %>"><%= q.text %></label></p> 
     <% } %> 
     </div></div> 
    <% } %> 
    <button type="button" name="next"><b>Answer</b></button> 
</script> 
+0

Read (http://stackoverflow.com/q/500504/722238) – fbynite

+0

Спасибо! Я решил эту проблему с _.each(): '<скрипт ид = "questionTemplate" Тип = "текст/шаблон">

\t <% _.each(question, function(q) { %>

<% }); %>
' – FladeX

+0

@fbynite: Использование "для ... в" никоим образом " такая плохая идея ». У этого просто есть некоторые причуды, о которых должны знать хорошие кодеры. В этом случае ни один из этих причуд не применяется. –

Смежные вопросы