我有这段代码
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方法。上面的代码不起作用。知道如何创建一个函数,以便它可以用于不同的帮助方法吗?
答案 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 = {}