2012-09-17 67 views
0

假設這樣的:與兒童本身Backbone.js的集合/ Rails的模型

Model Foo: 
    -> id 
    -> name 
    -> description 
    -> children[] 

到底在哪兒是Foo個集合。每個Foo可以有零個或多個孩子,全部具有與其父母相同的基本結構。

在Backbone.js中做什麼是正確的方式來做這個視圖/模板?如果這有什麼不同,我正在建立一個Rails應用程序的頂部。

+0

這看起來像一個樹形結構。爲什麼不只是每個'Foo'都有一個視圖,並且取決於你想如何顯示每個視圖都有一個視圖模板。究竟是什麼問題? – PhD

+0

是的...它是一棵樹......事情是'Foo'視圖需要遞歸,我不知道如何在Backbone中實現這個視圖 – mga

+0

你是什麼意思視圖是遞歸的?每個遞歸函數都可以用迭代的形式編寫,所以我不確定問題是什麼。你能給個例子嗎? – PhD

回答

0

我結束了使用類似的東西到底是怎麼描述:Run Template in Template (recursion) within underscore.js template engine,但我使用的CoffeeScript所以它是略有不同:

的觀點:

# foo.js.coffee 

class MyApp.Views.Foo extends Backbone.View 

template: JST['foo'] 

inititalize: -> 
    #init stuff 

render: => 
    templateFn = @template 
    $(@el).html(@template(model: @model, templateFn: templateFn)) 
    @ 

@model將有份額裏面的孩子他們的父母的結構。

模板:

# foo.jst.eco 
<%# other output stuff here %> 

<%# there is a 'components' attribute that contains the children %> 
<% if @model.get('components') : %> 
<%# recursive output of components %> 
    <% for e in @model.get('components') : %> 
     <% foo = new MyApp.Models.Foo() %> 
     <% foo.set(e) %> 
     <%# note the - instead of = below... in my case the JSON contains HTML entities %> 
     <%- @templateFn(model: component, templateFn: @templateFn) %> 
    <% end %> 
<% end %>