Javascript Coffeescript类和把手模板以及自定义块辅助对象
当我对一个变量使用handlebar.compile时,它工作得很好,但是当我将函数放在Coffee类属性上时,它会给我未定义的,bug?或者我错过了一些基本的java/coffee功能 这是我的小提琴:Javascript Coffeescript类和把手模板以及自定义块辅助对象,javascript,coffeescript,handlebars.js,Javascript,Coffeescript,Handlebars.js,当我对一个变量使用handlebar.compile时,它工作得很好,但是当我将函数放在Coffee类属性上时,它会给我未定义的,bug?或者我错过了一些基本的java/coffee功能 这是我的小提琴: 类测试 模板:handlebar.compile( """ {{{#迭代数据} {{data}} {{/迭代} """ ) 模板=handlebar.compile( """ {{{#迭代数据} {{data}} {{/迭代} """ ) 还有另一个与脊梁有关的问题: ----更新-----
类测试
模板:handlebar.compile(
"""
{{{#迭代数据}
{{data}}
{{/迭代}
"""
)
模板=handlebar.compile(
"""
{{{#迭代数据}
{{data}}
{{/迭代}
"""
)
还有另一个与脊梁有关的问题:
----更新-----
我的第一把小提琴解决了(但车把版本过时了),错误是一个愚蠢的OOP疏忽
但是!我的第二把小提琴(现在我已经更新了第一把小提琴的把手资源,也是我的第一把小提琴…)给了我一个错误
TypeError:回调不是函数
看来回调部分没有正确处理。。。coffee类或简单变量情况下的错误都是相同的…这是因为您正在检查
Test
类本身的模板属性,而不是实例化Test
类的新实例并检查该实例上的属性。以下方面应起作用:
$ ->
console.log new Test().template
console.log template
这是因为您正在检查Test
类本身的template
属性,而不是实例化Test
类的新实例并检查该实例上的属性。以下方面应起作用:
$ ->
console.log new Test().template
console.log template
当你这么说的时候:
class Test
template: ...
您正在将template
定义为实例属性,因此必须先创建实例,然后才能查看template
:
t = new Test
console.log(t.template)
或者您可以从测试的原型中挖掘模板
:
console.log(Test::template)
如果希望模板
成为类属性,则:
class Test
@template: ...
演示:
您的第二个问题是关于如何调用把手助手的更改。最后一个参数过去是回调函数,您将对{{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 ''
演示:当您这样说:
class Test
template: ...
您正在将template
定义为实例属性,因此必须先创建实例,然后才能查看template
:
t = new Test
console.log(t.template)
或者您可以从测试的原型中挖掘模板
:
console.log(Test::template)
如果希望模板
成为类属性,则:
class Test
@template: ...
演示:
您的第二个问题是关于如何调用把手助手的更改。最后一个参数过去是回调函数,您将对{{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 ''
演示:哦,我的错误,谢谢,第一把小提琴现在可以用了,那么我不明白为什么第二把小提琴不能用,如果你用firebug检查它,它会给出一个错误:回调不是函数…@cl0udw4lk3r:看看我的更新。车把助手的参数发生了变化,您使用的是旧的参数格式和新的库。哦,我的错误,谢谢,第一个提琴现在可以工作了,那么我不明白为什么第二个提琴不能工作,如果您用firebug检查它,它会给出一个错误:回调不是函数…@cl0udw4lk3r:看看我的更新。Handlebar helpers的参数已更改,您正在将旧的参数格式与新的库一起使用。