我只是尝试.get
一个属性并将其显示在Rails,Backbone,Coffeescript应用程序中的html元素中,但结果始终是undefined
在控制台中。此代码的错误是:
未捕获的TypeError:无法读取未定义的属性“长度”
目标是让一个仪表板显示各种面板。我在过去的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>
答案 0 :(得分:1)
您可能希望将渲染函数传递给对象(尽管这只是一个有根据的猜测)。
也许:
render: ->
$(@el).html(@template({model: @model}))
this
// and in an eco template
<h1>Panel 1</h1>
<p><%= @model.length %></p>
答案 1 :(得分: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>