我试图让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'
答案 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
而不是=>
定义->
,这样即使您将其与类实例分离,上下文仍然是相同的。