Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor JS中重用的部分代码_Javascript_Meteor_Coffeescript - Fatal编程技术网

Javascript Meteor JS中重用的部分代码

Javascript Meteor JS中重用的部分代码,javascript,meteor,coffeescript,Javascript,Meteor,Coffeescript,我有这个密码 Template['product'].助手( “变体”:-> variant\u value=Session.get('variant') 如果变量_值 返回变量u值 其他的 Session.set('variant',@lower_variant()) “isSelected”:-> 如果@variant()==opt1\u name 返回真值 否则返回false 我想在isSelected中使用variant方法。上面的代码不起作用。你知道如何创建一个函数以便可以用于不同的

我有这个密码

Template['product'].助手(
“变体”:->
variant\u value=Session.get('variant')
如果变量_值
返回变量u值
其他的
Session.set('variant',@lower_variant())
“isSelected”:->
如果@variant()==opt1\u name
返回真值
否则返回false
我想在isSelected中使用variant方法。上面的代码不起作用。你知道如何创建一个函数以便可以用于不同的帮助器方法吗?

但是如何创建一个函数以便可以用于不同的帮助器方法吗?只需创建一个全局函数即可

我不是咖啡剧本方面的专家

但在meteor上,这就是全局变量的情况,从

按照通常的CoffeeScript约定,CoffeeScript变量是 默认情况下,文件的作用域为(仅在其所在的.coffee文件中可见) (已定义。)

因此,您可以在使用该助手的.coffee文件的顶层创建该函数

纯javascript

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

您无法访问私有帮助器方法的原因是它尚未创建。它被定义为对象的一部分,该对象在定义后返回给
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        

实际上,我认为您正在寻找
Template.registerHelper()
函数

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

UPD: 要在CoffeeScript中创建全局Meteor的应用程序变量,只需通过
@
将其绑定到全局范围即可:

@myGlobalVar = {}
或者将其绑定到Meteor对象:

Meteor.myGlobalVar = {}

顺便说一句,在CoffeeScript:
@myGlobalVar={}
中创建全局变量,然后再使用它