2013-06-19 56 views
0

我有一個整齊的DOM分離數據並返回其dataui對象的公共API的JavaScript模塊:當我嘗試訪問變量時,爲什麼我的javascript模塊返回undefined?

var PtCalcApp = (function() { 
    var ptCalc = ptCalc || {}; 

    ptCalc.ui = { 
     storage: $('#pt-storage'), 
     backup: { 
      daily: $('#per-day-data'), 
      weekly: $('#per-week-data'), 
      monthly: $('#per-month-data'), 
      yearly: $('#per-year-data') 
     }, 
     change: { 
      yearly: $('#annual-change'), 
      daily: $('#daily-change') 
     } 
    }; 

    ptCalc.data = { 
     storage: function() { 
      ptCalc.ui.storage.val() 
     } 
    } 

    return ptCalc; 
})(); 

現在,當我嘗試訪問這樣的這樣的數據:

PtCalcApp.data.storage() 

它返回undefined。我在做什麼這個自我調用函數模式錯了?我該如何解決?

+0

您是直接存儲在視頻格式的DOM數據,我沒有看到分離。 – Esailija

+0

好吧,你可以告訴我一個更好的方式來做到這一點,而不使用mvc框架? –

+1

這看起來不是一個有效的選擇器'$('pt-storage')' – elclanrs

回答

1

不必返回從函數的任何訪問它。沒有return聲明,函數將返回undefined(除非使用new調用,但這是另一回事)。

storage: function() { 
    ptCalc.ui.storage.val() 
} 

應該

storage: function() { 
    return ptCalc.ui.storage.val() 
} 
+0

你是對的 - 修正了它 –

+0

很好的解釋 - 謝謝 –

0

PtCalcApp.ui.storage不是一個函數,它是一個屬性。

你需要使用PtCalcApp.ui.storage不是PtCalcApp.ui.storage()

如果你想使用的功能,那麼你需要將其聲明爲

storage: function(){ 
    return $('pt-storage'); 
} 
+0

對不起,我在發佈代碼時發錯了'PtCalcApp.ui.storage' - 它不起作用 –

+0

請參閱更正更新 –

+1

@AmitErandole看起來像你在'pt-storage'前面沒有'#' –

相關問題