0
我使用玉來創建電子郵件模板,所以我爲每種類型的電子郵件和每種語言都有一個玉文件。我希望能夠從玉石模板中設置電子郵件主題,它可以通過讀取模板中定義的變量或找到標題標籤的內容,但我不能做任何一個。有沒有辦法將一個html標籤綁定到一個函數,以便我可以獲取它的內容?或者只是能夠訪問在玉模板中定義的變量?我可以訪問在玉模板中定義的變量嗎?
謝謝!
我使用玉來創建電子郵件模板,所以我爲每種類型的電子郵件和每種語言都有一個玉文件。我希望能夠從玉石模板中設置電子郵件主題,它可以通過讀取模板中定義的變量或找到標題標籤的內容,但我不能做任何一個。有沒有辦法將一個html標籤綁定到一個函數,以便我可以獲取它的內容?或者只是能夠訪問在玉模板中定義的變量?我可以訪問在玉模板中定義的變量嗎?
謝謝!
這就是我所做的。
首先,我擴展了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
希望它可以幫助別人!
如果只有一個變量,你可以把它放在模板的名字裏面。即template_en.jade – fabrizioM