【问题标题】:Meteor and CoffeeScript: Cannot call method 'helpers' of undefinedMeteor 和 CoffeeScript:无法调用未定义的方法“助手”
【发布时间】:2014-02-16 14:49:08
【问题描述】:

我刚刚为 Meteor 设置了 CoffeeScript(我也在使用 Jade),看来我的助手(渲染和事件函数也一样)不再工作了。

Template.signIn.helpers
    showForgotPassword: () ->
        return Session.get('showForgotPassword')

代码似乎已正确生成,但包含在匿名函数中。

我在 Web 控制台中收到以下错误:

Uncaught TypeError: Cannot call method 'helpers' of undefined (account.coffee:12)

我想知道代码是在页面完全加载之前运行还是由于其他原因。我也试过这个,但没有任何改变(虽然它似乎在这个 tutorial 中工作):

root = global ? window

root.Template.signIn.helpers
    showForgotPassword: () ->
        return Session.get('showForgotPassword')

【问题讨论】:

    标签: javascript coffeescript meteor


    【解决方案1】:

    当我使用 Meteor.startup 包装我的代码时,问题已得到解决(请参阅 David Weldon post)。

    if I put .jade and .coffee into same level folder meteor will load .coffee before .jade, then it causes no such template。为防止这种情况,您可以在翡翠文件前加上 _。

    【讨论】:

    • 不幸的是,我们必须玩所有这些游戏才能让玉发挥作用。我怀疑新的渲染引擎稳定后,添加适当的翡翠支持会容易很多。目前,我坚持使用我的 cakefile 解决方案。
    【解决方案2】:

    感谢@Julien 的出色指点。

    我在大约几个小时前遇到了这个问题,从那以后我一直很头疼。

    我所做的不是 _ 方法,而是将我的翡翠文件命名为 .html.jade 并将我的咖啡脚本文件命名为 .js.coffee

    这样,jade 文件在咖啡文件之前加载,一切正常。

    _方式的好处是相关的jade和coffee文件是在一起的。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我认为这在meteor-jade v0.2.2中解决了

      【讨论】:

        猜你喜欢
        • 2013-07-14
        • 2014-03-28
        • 1970-01-01
        • 2018-03-02
        • 2015-07-18
        • 2013-06-10
        • 2015-10-18
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多