2011-08-16 60 views
0

我想獲得一個jQuery.ajax回調用實例來處理消息。但是,我無法將調用實例放入函數中。獲取類實例回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

令人驚訝的是context: this不起作用。您應該能夠要麼使用,或使用=>保羅暗示(最簡潔的),或者使用經典的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,以便即使將它從類實例中分離出來,上下文仍然是相同的。

+0

謝謝 - 我在想,'這'是在ajax回調的上下文將是不同的。 –

+0

@S。赫伯特呃,是的。對不起,我在我的回答中更正了代碼。 –