2016-09-27 160 views
0

因此,有一個模板文件爲我的網頁中的組件生成幾個不同的佈局,並使用不同的變量來指定大小和內容。因此,爲了減少項目中的文件數量,我試圖重複使用代碼片段的模板文件,而不是爲它們提供專用文件。通過子表達式,我不得不做這樣的事情的想法:有沒有辦法將Handlebars局部變量(包含變量)傳遞給另一個幫助器?

{{ escape (template var1=var1 var2=var2 var3=var3) }} 

其中escape是一個輔助,需要一個字符串,它逃脫(有趣的是),並且:

(template var1=var1 var2=var2 var3=var3) 

是應該與{{> template var1=var1 var2=var2 var3=var3 }}具有相同的效果,大概以字符串形式返回完整的標記。

幫助程序似乎沒有收到任何字符串,因爲在參數上運行typeof正在返回undefined。我假設自{{> template var1=var1 var2=var2 var3=var3 }}在文件中使用較高,這是註冊它在文件的其餘部分使用,但現在我認爲這不是如何Handlebars做它的事情。

是否有可能檢索到這樣的部分或需要使用{{>語法(這是行不通的)?

+0

爲什麼不改變從局部到塊幫手'template',因爲這是你要如何使用它呢? – 76484

+0

是的,當我提交這個問題時,編程部分編譯並不是我所熟悉的。我現在試圖使用這種方法,而不是我上面嘗試的方法。 –

回答

0

當我問這個問題的時候,我對上下文是如何應用於部分編程有點困惑。現在我已經做了一些更多的研究(我在嘗試之前嘗試過,但沒有獲得任何幫助),現在我知道Handlebars.compile(partial)將爲給定的部分返回一個對象,並允許通過partial(context)返回應該返回的上下文。


示例代碼

function escape(partial) { 
    let compiledPartial = Handlebars.compile(partial); 

    let context = { greeting: "Hello World!" }; 

    return compiledPartial(context); 
} 
相關問題