在jquery.ajax回调中获取类实例

时间:2011-08-16 17:04:06

标签: jquery coffeescript

我试图让jQuery.ajax回调调用实例来处理消息。但是,我无法将调用实例放入函数中。

在GetHistory调用中,返回一个消息列表,我希望Process方法对每个消息起作用。问题是在回调函数执行期间返回一个错误,指出“this.Process is undefined”。这就是为什么我猜测实例没有被设置。

我也尝试将参数添加到'context:this'的.ajax中,但这似乎没有帮助。

class MessageHandler

  @messages: []

  Process: (message) ->
      messages.push message

  GetHistory: ->    
    jQuery.ajax url:'/home/BidDetail', dataType: 'json', data: 'auctionId=1', success:     (data) ->
      @Process record for record in data.records when record.type == 'BID'

2 个答案:

答案 0 :(得分:4)

您是否尝试过使用=> fat arrow中建议的Coffeescript/Javascript variable scope}?

答案 1 :(得分:0)

我很惊讶context: this不起作用。您应该能够使用它,或者使用=>作为Paul建议(最简洁),或使用经典self = this(更高效):

GetHistory: ->    
  self = this
  jQuery.ajax url:'/home/BidDetail', dataType: 'json', data: 'auctionId=1', success: (data) ->
    self.Process record for record in data.records when record.type == 'BID'

请注意,我假设您使用GetHistory语法调用obj.GetHistory(),其中obj是您希望this指向的对象success回调。您可能希望使用GetHistory而不是=>定义->,这样即使您将其与类实例分离,上下文仍然是相同的。