2013-06-19 58 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'前面没有'#' –

相关问题