2013-03-04 118 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