1

.getRails、Backbone、Coffeescript アプリの html 要素に属性を表示しようとしているだけですが、結果は常にundefinedコンソールに表示されます。このコードのエラーは次のとおりです。

キャッチされていない TypeError: 未定義のプロパティ '長さ' を読み取ることができません

目標は、1 つのダッシュボードにさまざまなパネルを表示することです。過去 4 時間で、次のコードの約 50 のバリエーションを試しました :\ 助けていただけますか?

バックボーン ルーター:

class App.Routers.Dashboard extends Backbone.Router

routes:
    '': 'index'

initialize: ->
    preflist = new App.Models.Preflist()
    preflist.fetch success: ->
        paneloneview = new App.Views.PanelOne(model: preflist)
        $('#panel-one').html(paneloneview.render().el)

バックボーン ビュー:

class App.Views.PanelOne extends Backbone.View

    template: JST['dashboard/panel_one']

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

テンプレート ファイル:

<h1>Panel One</h1>

<p><%= @model.length %></p> 
4

2 に答える 2

1

おそらく、render 関数にオブジェクトを渡したいと思うでしょう (ただし、これは経験に基づいた推測にすぎません)。

多分:

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

// and in an eco template

<h1>Panel 1</h1>
<p><%= @model.length %></p>
于 2012-12-14T06:23:51.807 に答える
0

私はそれを考え出した。その上で寝て、BackboneRailsCastをもう一度見なければなりませんでした。みなさん、ありがとうございました!正しいコードは次のとおりです。

class App.Routers.Dashboard extends Backbone.Router

routes:
    '': 'index'

initialize: ->
    preflist = new App.Models.Preflist()
    preflist.fetch success: ->
        paneloneview = new App.Views.PanelOne(model: preflist)
        $('#panel-one').html(paneloneview.render().el)


class App.Views.PanelOne extends Backbone.View

    template: JST['dashboard/panel_one']

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



<h3>Panel One</h3>

<p><%= @preflist.get('panel_one') %></p>
于 2012-12-14T16:19:07.080 に答える