spine.js:“未知的未知记录”

时间:2012-01-24 01:14:22

标签: ajax coffeescript spine.js

我将spine.js与Spine.Ajax模块结合使用,通过JSON从服务器加载东西。我可能遇到了一些同步问题。我有一个侧边栏,它只是绑定到刷新和更改事件,然后呈现:

Survey.bind 'refresh change', @render

我还设置了一些路线,当用户通过#/ survey /:id访问时,会显示一个调查。这是我的控制者:

class App.Surveys extends Spine.Controller
  className: 'surveys'

  constructor: ->
    super

    @append(@sidebar = new App.Sidebar)       # Sidebar to select surveys
    @append(@surveys = new App.SurveysStack)  # Show survey details survey

    @routes
     '/surveys/:id': (params) ->
       @sidebar.active(params)
       @surveys.show.active(params)

    Survey.fetch()

如您所见,初始化后调用Survey.fetch(),这不会给侧边栏带来问题。但是,它似乎给调查Show控制器(由名为Spine.Stack的{​​{1}}调用)带来了问题:

App.SurveyStack

我不断收到来自评论部分的错误:class Show extends Spine.Controller constructor: -> super @active @change change: (params) => # There is a bug! If Survey is not fetched when we run this, # this throws an error. @item = Survey.find(params.id) @render() render: -> @html @view("surveys/show")(@item) 。我可以在Uncaught Unknown record完成之前制作Survey.find()功能块吗?

2 个答案:

答案 0 :(得分:2)

在您的诊断中,您在从服务器获取项目之前找不到项目是正确的。

最简单的解决方案是将事件绑定到Survey.fetch()调用,如下所示:

Survey.bind 'refresh change', @method_to_call

如果有帮助,请告诉我!

答案 1 :(得分:2)

实际上,对我有用的解决方案是在对象刷新后初始化Spine.Route.setup()。而不是app / index.js.coffee中的标准调用,它将是:

App.Survey.one 'refresh', ->
  Spine.Route.setup()