2013-03-04 68 views
1

当我使用Handlebars.compile在它工作得很好,但是当我把在功能上的咖啡类属性,它给我不确定,错误的变量?或者我想念一些基本的Java /咖啡功能?CoffeeScript的类和把手模板和自定义块帮手

还有就是我的提琴:http://jsfiddle.net/Cl0udW4lk3r/BpY5b/

​​

有一个在行动骨干另一小提琴:http://jsfiddle.net/Cl0udW4lk3r/D3FR9/20/

---- ----- UPDATE

我的第一小提琴解决(但车把版本已经过时),错误是一个愚蠢的OOP注意力不集中......

但是!我的第二小提琴(和现在,我已经更新了第一小提琴的车把资源,也是我的第一小提琴..)给我一个错误

TypeError: callback is not a function

看来,回调部分是不正确的处理...的错误是咖啡类或简单的变量情况下一样都...

回答

2

这是因为你检查Test类本身的template财产,而不是实例化Test类的新实例,并在该检查的财产实例。下面应该工作:

$ -> 
    console.log new Test().template 
    console.log template 
+0

谢谢,我已经更新了我的问题,新问题.. – cl0udw4lk3r 2013-03-04 08:10:54

3

当你这样说:

class Test 
    template: ... 
您定义 template作为实例属性

所以你必须创建一个实例你可以看看template前:

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

或者你可以挖掘出templateTest的原型:

console.log(Test::template) 

如果你想template是一个类的属性,则:

class Test 
    @template: ... 

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


你的第二个问题涉及到在车把助手是如何被称为改变。最后一个参数曾经是回调函数,您可以使用fn.inverse作为{{else}}块。最后一个参数的助手,现在是在.fn的功能和.inverse else区块功能的对象。所以对于把手的最新版本,你的助手:

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/

+0

哦,我的错误,谢谢,第一小提琴现在工作,然后我不明白为什么第二小提琴不应该工作,如果你检查它与萤火虫它给一个错误:回调不是一个函数... – cl0udw4lk3r 2013-03-04 08:03:04

+0

@ cl0udw4lk3r:看看我的更新。 Handlebars助手的参数已更改,您将旧参数格式与新库一起使用。 – 2013-03-04 19:55:04