2012-06-06 22 views
4

我正在使用Smarty進行服務器端模板,我想使用Handlebars.js進行客戶端模板,但由於Handlebars使用與Smarty相同的大括號,因此Smarty會導致錯誤。 我可以在Smarty的文字標籤中編寫Handlebars模板,但這次我不能在Handlebars模板中使用Smarty。如何使用Handlebars.js和Smarty兩者?

例如: 我爲cleanurl寫了一個smarty塊函數。我不想爲javascript寫一個cleanurl函數。所以我想使用Smarty和Handlebars.js。

<div class="model-item" id="model-{{id}}"> 
    <a href="{$mainurl}{cu}?com=model&act=view&id={{id}}{/cu}"> {{name}} </a> 
</div> 

回答

1

http://www.smarty.net/docs/en/language.escaping.tpl

文檔討論逃逸的這個部分。我認爲「{ldelim},{rdelim}」可能是你正在尋找的......儘管它使得代碼的可讀性稍差...

+0

我可以使用{ldelim}和{rdelim}但我必須寫的所有的車把的支架爲{ldelim},{rdelim}。我想,這可能會導致混亂也是我認爲這種延遲的發展過程。我不能更改Smarty的定界符,因爲我在大多數地方使用它。我沒有在任何地方使用把手。我可以更改把手的定界符。這是個好主意嗎?這可能嗎? –

+0

也許寫一個自定義函數來輸出括號......(在Smarty中) – KauriNZ

+0

我在鬍子文檔中發現[設置delimeter標籤](http://mustache.github.com/mustache.5.html)。我在尋找。在handebars的網站上 __「鬍鬚模板與把手兼容,所以你可以拿一個鬍鬚模板,把它導入把手,並開始利用額外的把手功能。」__。Handlebars中有這個功能嗎? –

6

你也可以使用文字標籤......比逃避每個大括號。

{literal} 
<script id="entry-template" type="text/x-handlebars-template"> 
    {{any_var}} 
</script> 
{/literal} 
+0

文字標籤是好的,但是當我使用smarty和mustache vars時,代碼做得非常複雜和混亂。我決定使用下劃線微模板,我很高興:) –