2014-06-28 53 views
0

我正在創建一個基本的調查導航應用程序來學習嵌套模型。我正在使用主幹關係來關聯我的模型。嵌套骨幹模型/循環在CoffeeScript數組

我認爲我有他們正確的相關,但我很努力顯示在調查中的每個問題。在我的調查模板中,我可以做@survey.get('questions').length,這是正確的,但由於某種原因,.eachfor question in @survey.get('questions')都會引發錯誤。

我也試圖通過在視圖本身的問題,循環的途徑,但也引發一個錯誤

任何幫助我得到這個工作將非常感激!

survey_show.jst.eco模板

<h2><%= @survey.get('title') %></h2> 
<div class="row"> 
    <div class="col-md-8" 
     <span class="pull-right">Number Taken: <%= @survey.get('number_taken') %>/<%= @survey.get('survey_limit') %></span> 
    </div> 
</div> 
<ul class="list-group" id="questions"> 
<% @survey.get("questions").each %> 
<li class="list=group-item">Derp</li> 
<% end %> 
</ul> 

survey.js.coffee測量模型

class SurveyMe.Models.Survey extends Backbone.RelationalModel 

    defaults: 
    title: 'Enter survey name' 
    survey_limit: 1000 
    number_taken: 0 
    long: false 
    survey_finished: false 

    urlRoot: '/surveys' 

    relations = [{ 
    type: Backbone.HasMany, 
    key: 'questions', 
    relatedModel: 'SurveyMe.Models.Question' 
    reverseRelation: { 
     key: 'survey', 
     includeInJSON: 'id' 
    } 
    }] 

question.js.coffee問題型號

class SurveyMe.Models.Question extends Backbone.RelationalModel 

    urlRoot: '/surveys' 

    relations = [{ 
    type: Backbone.HasMany, 
    key: 'answers', 
    relatedModel: 'SurveyMe.Models.Answer' 
    reverseRelation: { 
     key: 'question', 
     includeInJSON: 'id' 
    } 
    }] 

survey_show.js.coffee調查顯示視圖

class SurveyMe.Views.SurveyShow extends Backbone.View 

    template: JST['templates/surveys/survey_show'] 

    initialize: -> 
    @model.on('all', @render, this) 
    @model.on('change', @alert, this) 

    events: { 
    'click #back': 'back' 
    } 

    render: -> 
    $(@el).html(@template(survey: @model)) 
    #@model.questions.each(@addQuestion) 
    this 

    back: -> 
    Backbone.history.navigate("surveys",true) 

    alert: -> 
    alert('changed titled') 

    addQuestion: (question) -> 
    view = new SurveyMe.Views.Question(model: question) 
    @$('#questions').append(view.render().el) 

問題查看

class SurveyMe.Views.Question extends Backbone.View 

    template: JST['templates/surveys/question'] 

    tagName: 'li' 

    className: 'list-group-item' 

    events: 
    'click': 'edit' 

    edit: -> 
    Backbone.history.navigate("questions/#{@model.get('id')}",true) 

    initialize: -> 
    @render 

    render: -> 
    $(@el).html(@template(question: @model)) 
    this 

問題模板

<%= @question.get('title') %> 
<span class="pull-right"><%= @question.get('answers').length %></span> 

回答

0

我想通了。我最後錯過了冒號。所以這給了我想要的東西:

<ul class="list-group"> 
<% for question, i in @survey.get("questions"): %> 
    <li class="list-group-item"> 
     <%= @survey.get("questions")[i]["title"] %> 
     <ul class="list-group"> 
      <% for answer, j in @survey.get("questions")[i]["answers"]: %> 
      <li class="list-group-item"> 
       <%= @survey.get("questions")[i]["answers"][j]["title"] %> 
      </li> 
      <% end %> 
     </ul> 
    </li> 
<% end %> 
</ul>