Meteor JS中代码的重复使用部分
Reused part of code in Meteor JS
我有这个代码
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中使用变体方法。上面的代码不起作用。你知道如何创建一个函数,以便它可以用于不同的辅助方法吗?
但是如何创建一个函数,以便将其用于不同的辅助方法只需创建一个全局函数
我不是咖啡剧本方面的专家。
但在流星上,这就是文档中全局变量的情况。
根据通常的CoffeeScript约定,CoffeeSript变量为默认情况下文件的作用域(仅在.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的应用程序var,只需通过@
:将其绑定到全局范围即可
@myGlobalVar = {}
或者将其绑定到Meteor
对象:
Meteor.myGlobalVar = {}
- 用chart.js绘制条形图
- 问题用moment JS制作一个简单的时间表
- 有没有一种方法可以用YepNope.js为脚本提供动态名称
- 用angular js在屏幕上点击播放和暂停html5视频
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 用纯 Js 在每个 li 上应用函数
- 我怎样才能用Ramda.js做得更好
- 用Node.js编程运行JavaScript
- 用three.js和CSG设置位置
- 我能用angular js ng repeat和turn.js吗
- 当用HTML5+JS+PHP设计发送到电子邮件的表单时,需要采取哪些良好的安全预防措施
- 用PHP/JS开发依赖表单字段的最佳方法
- 用Raphael.js延缓元素的去除
- 有没有办法用pdf.js为pdf渲染编写javascript事件
- 用angular.js加载更多分页|按钮dos'不要藏起来
- 用q.js链接承诺
- 我怎样才能用 Require.js 实现 TinyMCE
- 用车把.js做一个“if x in dict(json)”语句
- JSON文件从URL中出现得很好,但不允许我用$.getJSON(JS)抓取它
- 用三.js的正弦波从对象的中心对对象进行动画处理