【问题标题】:Rails + Backbone Model is undefined even within fetch successRails + Backbone 模型即使在 fetch 成功中也未定义
【发布时间】:2012-12-02 03:16:17
【问题描述】:

我只是想.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> 

【问题讨论】:

  • 这是下划线模板吗?
  • 嗨,穆。我正在使用使用生态模板的 rails gem 上的主干。

标签: ruby-on-rails backbone.js coffeescript


【解决方案1】:

您可能希望将一个对象传递给渲染函数(尽管这只是一个有根据的猜测)。

也许:

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

// and in an eco template

<h1>Panel 1</h1>
<p><%= @model.length %></p>

【讨论】:

  • 首先,非常感谢您的帮助。感谢您的时间。我刚试过这个,它仍然是未定义的。然而,错误有点不同:Uncaught ReferenceError: model is not defined
【解决方案2】:

我想通了。我只需要在上面睡觉,然后再看一次 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多