2011-11-18 29 views
0

這是我的第一個問題,雖然我是常客。我試圖自己找到答案,但沒有喜樂。

所以,我有一類coffescript(Rails的3.1)是這樣的:

root = global ? window 

class root.CTimelineGraph 
    constructor: (div, @w, @nw, @table_name) -> 
    @columnNames = "" 
    @dbReadTable(@table_name) 
    .. 

dbReadTable: (table_name) -> 
    if table_name == "SOMETABLE" then @dbReadTableA1() 

dbReadTableA1: -> 
    sipa = "" 
    $.ajax 
     async: false 
     type: "GET" 
     url: "ajax/getcolumnnames" 
     dataType: 'json' 
     success: (data) -> 
     sipa = data 
    @columnNames = sipa 

我的問題是,我怎麼能填充@columnNames(在構造函數中聲明),與我回來從ajax/getcolumnnames數據控制器?我使用第三個變量sipa從成功函數中獲取數據。我做錯了嗎?

我發佈的代碼正在工作。我在問這個問題,因爲我打算讓這個班的很多實例都致電dbReadTable很多。

謝謝。

回答

2

這裏有一個更好的辦法,沒有額外的變量:

dbReadTableA1: => 
    $.ajax 
    async: false 
    type: "GET" 
    url: "ajax/getcolumnnames" 
    dataType: 'json' 
    success: (data) => 
     @columnNames = data 

的關鍵是雙箭頭結合this到您的類的實例在success回調,這使得可在函數內部@columnNames。這也假定dbReadTableA1被聲明爲類中的成員函數。

+0

謝謝!是的,dbReadTableA1也來自同一個類。他們都在同一班。我從C++到js,coffeescript,我想我不會像我想的那樣開放新的冒險。再次感謝您爲我清除這個問題。我會檢查更多關於=> ... – user1054651