【问题标题】:Reused part of code in Meteor JS在 Meteor JS 中重用部分代码
【发布时间】:2015-06-14 06:35:31
【问题描述】:

我有这个代码

Template['product'].helpers( 'variant': -> variant_value = Session.get('variant') if variant_value return variant_value else Session.set('variant',@lowest_variant()) 'isSelected': -> if @variant() == opt1_name return true else return false 我想在 isSelected 中使用变体方法。上面的代码不起作用。知道如何创建一个函数以便它可以用于不同的辅助方法吗?

【问题讨论】:

    标签: javascript meteor coffeescript


    【解决方案1】:

    其实我觉得你在找Template.registerHelper()函数

    Template.registerHelper 'isSelected', ->
       return if variant() == opt1_name then true else false
    

    请参阅文档here

    统一更新: 要在 CoffeeScript 中创建一个全局 Meteor 的应用程序变量,只需通过 @ 将其绑定到全局范围:

    @myGlobalVar = {}
    

    或者将其绑定到Meteor 对象:

    Meteor.myGlobalVar = {}
    

    【讨论】:

      【解决方案2】:

      您无权访问您的私有辅助方法的原因是它尚未创建。它被定义为对象的一部分,在其定义后返回给helpers() 方法。

      它必须在该方法之外声明:

      variant = () ->
        variant_value = Session.get('variant')
        if variant_value
          return variant_value
        else
          Session.set('variant',@lowest_variant())
      
      Template['product'].helpers(
        'isSelected': ->
          if variant() == opt1_name
            return true
          else return false        
      

      【讨论】:

        【解决方案3】:

        但是如何创建一个函数以便它可以用于不同的辅助方法只需创建一个全局函数

        我不是咖啡脚本方面的专家。

        但是在meteor上,这就是全局变量发生的情况,来自docs

        根据通常的 CoffeeScript 约定,CoffeeScript 变量是 默认情况下是文件范围的(仅在它们所在的 .coffee 文件中可见 已定义。)

        因此,您在使用该帮助程序的 .coffee 文件的顶层创建该函数。

        javascript

         variant = function(){  
             //code to be used on diferents helpers
            }
        

        【讨论】:

        • 顺便说一句,在 CoffeeScript 中创建全局变量:@myGlobalVar = {},然后再使用它
        猜你喜欢
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 2013-05-17
        相关资源
        最近更新 更多