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={}
中创建全局变量,然后再使用它