使用params在Collection fetch上未触发成功方法

时间:2014-02-25 11:23:45

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

我是骨干的新手,我有一个非常奇怪的问题。问题是,当我将params传递给集合提取时,它永远不会触发成功回调方法,但是没有params它会触发。

这是我的代码,有了它,它永远不会成功回调,但如果我删除数据参数,那么它会成功回调并发出警告信息。

P.S,我知道还有另一种方法可以解决reset属性并在视图中绑定集合但我无法使用它。

showPhotoList: (projectId) =>
    @photoLists.fetch data: $.param(project_id: projectId),
      success: @renderPhotoList,

      error: =>
        alert "Error occured while fetching the project"


  renderPhotoList: =>
    alert "hellow render"   

1 个答案:

答案 0 :(得分:1)

您的CoffeeScript没有按照您的想法执行。这样:

@photoLists.fetch data: $.param(project_id: projectId),
  success: @renderPhotoList,

  error: =>
    alert "Error occured while fetching the project"

真的意味着:

@photoLists.fetch(
  { data: ... },
  { success: ..., error: => ... }
)

因此,您的successerror回调正在第二个参数中传递给fetch,而不是第一个选项参数。 Collection#fetch只知道一个选项参数,因此它永远不会看到你的回调。

您需要非常小心并与CoffeeScript格式保持一致:

@photoLists.fetch
  data: $.param(project_id: projectId)
  success: @renderPhotoList
  error: =>
    alert "Error occured while fetching the project"

如果这真的是你的错误回调,那么你不需要一个胖箭头(=>),它不关心@(AKA this)是什么所以一个未绑定的函数(error: -> ...)就足够了。