在Meteor JS中重用了部分代码

时间:2015-04-09 03:34:00

标签: javascript meteor coffeescript

我有这段代码

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中使用variant方法。上面的代码不起作用。知道如何创建一个函数,以便它可以用于不同的帮助方法吗?

3 个答案:

答案 0 :(得分:1)

如何创建一个函数,以便它可以用于不同的帮助方法只需创建一个全局功能

我不是咖啡脚本的专家。

但是在流星上,这是全局变量发生的事情,来自docs

  

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

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

javascript

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

答案 1 :(得分:0)

您无法访问私人帮助程序方法的原因是它尚未创建。它被定义为在定义后返回到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        

答案 2 :(得分:0)

实际上我认为你正在寻找Template.registerHelper()功能

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

请参阅文档here

<强> UPD: 要在CoffeeScript中创建全球Meteor的app var,只需通过@将其绑定到全局范围:

@myGlobalVar = {}

或者将其绑定到Meteor对象:

Meteor.myGlobalVar = {}