首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >spine.js:“未捕获未知记录”

spine.js:“未捕获未知记录”
EN

Stack Overflow用户
提问于 2012-01-24 09:14:22
回答 2查看 569关注 0票数 2

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

代码语言:javascript
代码运行次数:0
运行
复制
Survey.bind 'refresh change', @render

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

代码语言:javascript
代码运行次数:0
运行
复制
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控制器(由一个名为App.SurveyStackSpine.Stack调用)带来了问题:

代码语言:javascript
代码运行次数:0
运行
复制
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.fetch()完成之前,我可以让Survey.find()函数阻塞吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 10:39:18

您的诊断是正确的,即您在从服务器获取项目之前无法找到它。

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

代码语言:javascript
代码运行次数:0
运行
复制
Survey.bind 'refresh change', @method_to_call

如果有帮助,请让我知道!

票数 2
EN

Stack Overflow用户

发布于 2012-10-03 17:38:22

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

代码语言:javascript
代码运行次数:0
运行
复制
App.Survey.one 'refresh', ->
  Spine.Route.setup()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8980925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档