[英]Coffeescript class and Handlebars template and custom block helper
当我在变量上使用Handlebars.compile时,效果很好,但是当我将函数放在Coffee类属性上时,它给了我undefined ,错误吗? 还是我错过了一些基本的Java /咖啡功能?
有我的小提琴: http : //jsfiddle.net/Cl0udW4lk3r/BpY5b/
class Test
template: Handlebars.compile (
"""
{{#iterate data}}
<p>{{data}}</p>
{{/iterate}}
"""
)
template = Handlebars.compile (
"""
{{#iterate data}}
<p>{{data}}</p>
{{/iterate}}
"""
)
还有另一个正在发挥作用的小提琴: http : //jsfiddle.net/Cl0udW4lk3r/D3FR9/20/
----更新-----
我的第一个小提琴已经解决(但是车把版本已经过时了),并且错误是愚蠢的OOP疏忽...
但! 我的第二个小提琴(现在我已经更新了第一个小提琴的把手资源,也是我的第一个小提琴。)给我一个错误
TypeError:回调不是函数
似乎回调部分未正确处理...错误在Coffee类或简单变量情况下都是相同的...
当你这样说:
class Test
template: ...
您将template
定义为实例属性,因此必须先创建一个实例,然后才能查看template
:
t = new Test
console.log(t.template)
或者,您可以从Test
的原型中挖掘出template
:
console.log(Test::template)
如果希望template
成为类属性,则:
class Test
@template: ...
演示: http : //jsfiddle.net/ambiguous/tvDpN/
第二个问题与“ Handlebars”助手的调用方式有关。 最后一个参数曾经是回调函数,您可以在{{else}}
块中使用fn.inverse
。 最后一个参数的助手,现在是用函数的对象.fn
和else区块功能.inverse
。 因此,对于最新版本的把手,您的助手:
Handlebars.registerHelper 'iterate', (context, callback) ->
switch typeof context
when 'object' then (callback(key: key, value: value) for own key, value of context).join ''
应该看起来像这样:
Handlebars.registerHelper 'iterate', (context, options) ->
switch typeof context
when 'object' then (options.fn(key: key, value: value) for own key, value of context).join ''
这是因为您要检查Test
类本身的template
属性,而不是实例化Test
类的新实例并检查该实例上的属性。 以下应该工作:
$ ->
console.log new Test().template
console.log template
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.