Backbonejs在我的视图中遇到了get请求的问题

时间:2016-08-04 20:58:15

标签: jquery ajax backbone.js coffeescript

我正在尝试在我的backbonejs视图渲染方法中发出get请求。关于ajax调用的成功,我想渲染我的模板。我通过访问最初传递给视图的模型我遇到了问题。我只能访问ajax请求中的数据。如何在ajax调用成功的情况下将我的@user模型提供给我?

FooAdmin.Views.Users ||= {}

class FooAdmin.Views.Users.ShowView extends Backbone.View    
  initialize: ->
    @user = @model

  template: HandlebarsTemplates["users/show"]

  render: ->   
    @self = @$el.html
    $.ajax FooAdmin.FOO_API_URL + "/api/v1/orders?user_id=#{@user.attributes.id}",
      type: 'GET'
      dataType: 'json'

      error: (jqXHR, textStatus, errorThrown) ->
        alert(textStatus)
      success: (data, textStatus, jqXHR) ->
        debugger;
        @self.html(@template(user: @user, order: data))

1 个答案:

答案 0 :(得分:0)

在您的成功功能中导致问题的 @ 引用的范围。此时 @ 不再像您期望的那样引用您的课程。通常使用类似的东西,我将在内部函数中添加对类或对象的显式引用。请参阅下面的渲染的第一行,以及在成功中用 thisRef 替换 @ 的更改。

FooAdmin.Views.Users ||= {}

class FooAdmin.Views.Users.ShowView extends Backbone.View    
  initialize: ->
    @user = @model

  template: HandlebarsTemplates["users/show"]

  render: ->   
    thisRef = @
    @self = @$el
    $.ajax FooAdmin.FOO_API_URL + "/api/v1/orders?user_id=#{@user.attributes.id}",
      type: 'GET'
      dataType: 'json'

      error: (jqXHR, textStatus, errorThrown) ->
        alert(textStatus)
      success: (data, textStatus, jqXHR) ->
        debugger;
        thisRef.self.html(thisRef.template(user: thisRef.user, order: data))