2013-07-18 74 views
0

我使用玉來創建電子郵件模板,所以我爲每種類型的電子郵件和每種語言都有一個玉文件。我希望能夠從玉石模板中設置電子郵件主題,它可以通過讀取模板中定義的變量或找到標題標籤的內容,但我不能做任何一個。有沒有辦法將一個html標籤綁定到一個函數,以便我可以獲取它的內容?或者只是能夠訪問在玉模板中定義的變量?我可以訪問在玉模板中定義的變量嗎?

謝謝!

+0

如果只有一個變量,你可以把它放在模板的名字裏面。即template_en.jade – fabrizioM

回答

1

這就是我所做的。

首先,我擴展了jade.Compiler來創建我自己的編譯器,重寫visitTag方法,以便在使用標題標籤時能夠捕獲。

subjects = {} 

EmailCompiler = (node, options) -> 
    jade.Compiler.call(this, node, options) 
EmailCompiler::__proto__ = jade.Compiler.prototype; 

EmailCompiler::visitTag = (tag) -> 
    if tag.name is 'title' 
    subjects[@options.filename] = @getText tag.block.nodes[0] 
    jade.Compiler.prototype.visitTag.call(this, tag) 

EmailCompiler::getText = (nodes, glue='') -> 
    [].map.call(nodes.nodes, (node) -> node.val).join glue 

然後玉編譯器叫這樣的:

fs.readFile filePath, (err, str) -> 
    jade.compile str, 
    compiler: EmailCompiler 
    filename: filePath 

希望它可以幫助別人!

相關問題