无法使用Backbone.js保存方法返回对象(控制台除外)?

时间:2013-06-11 21:02:31

标签: jquery backbone.js response

我在Rails上有一个骨干应用程序,它会响应新的模型属性。

  save: ->
    self = @
    attributes = {}
    @$el.children('.table').find('input, textarea').each ->
      attributes[ $(@).attr 'name' ] = $(@).val()
      self.$el.find('.text.' + $(@).attr('name') ).html $(@).val()

    response = @model.save attributes
    category = response.responseText

    window.response = response
    window.category = category

    console.log response
    console.log response.responseText

在控制台中,响应返回一个对象,但response.responseText没有。但是,如果我进入控制台并键入“response.responseText;” (因为我绑定了对窗口的响应),它返回文本。

我有没有理由不能在我的backbone.js函数中访问该变量,但我可以在控制台中使用?

1 个答案:

答案 0 :(得分:0)

Backbone发出 AJAX 请求,即异步请求。

console.log response
console.log response.responseText

这些行可能是在服务器实际响应之前执行(你不确定,但是因为你之前的代码很少,所以)。使用回调来处理该问题:

response = @model.save attributes success: =>
  console.log response.responseText

或其他回调,例如done等。您还可以使用sync等事件。