gpt4 book ai didi

javascript - Coffeescript 类和 Handlebars 模板和自定义 block 助手

转载 作者:行者123 更新时间:2023-11-30 08:54:07 26 4
gpt4 key购买 nike

当我在变量上使用 Handlebars.compile 时它运行良好,但是当我将函数放在 Coffee 类属性上时,它给我 undefined,错误?或者我错过了一些基本的 Java/咖啡功能?

这是我的 fiddle :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}}
"""
)

还有另一个 fiddle 中的主干:http://jsfiddle.net/Cl0udW4lk3r/D3FR9/20/

----更新-----

我的第一个 fiddle 解决了(但是 handlebars 版本已经过时),错误是一个愚蠢的 OOP 疏忽...

但是!我的第二个 fiddle (现在我已经更新了第一个 fiddle 的 Handlebars 资源,也是我的第一个 fiddle ..)给我一个错误

TypeError: callback is not a function

似乎回调部分没有正确处理...咖啡类或简单变量情况下的错误相同...

最佳答案

当你这样说时:

class Test
template: ...

您将 template 定义为实例属性,因此您必须先创建实例才能查看 template:

t = new Test
console.log(t.template)

或者你可以从 Test 的原型(prototype)中挖掘出 template:

console.log(Test::template)

如果你想让 template 成为一个类属性,那么:

class Test
@template: ...

演示:http://jsfiddle.net/ambiguous/tvDpN/


您的第二个问题与 Handlebars 助手调用方式的变化有关。最后一个参数曾经是回调函数,您将对 {{else}} block 使用 fn.inverse。帮助程序的最后一个参数现在是一个对象,其函数在 .fn 中,else block 函数在 .inverse 中。因此,对于最新版本的 Handlebars,您的 helper :

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 ''

演示:http://jsfiddle.net/ambiguous/NQZTG/

关于javascript - Coffeescript 类和 Handlebars 模板和自定义 block 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15195661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com