1

我只是试图.get在 Rails、Backbone、Coffeescript 应用程序的 html 元素中显示一个属性,但结果始终undefined在控制台中。此代码的错误是:

未捕获的类型错误:无法读取未定义的属性“长度”

目标是让一个仪表板显示各种面板。在过去的 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: ->
  $(@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

我想到了。我只需要在上面睡觉,然后再看一次 Backbone RailsCast。谢谢大家的帮助!正确的代码是这样的:

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 回答