2014-02-28 70 views
7

HTML和把手逃避單引號和雙引號。車把傳遞車把時表達

onclick="shareItem('{{name}}')"> 

當它有單引號時,不能成功傳遞安全轉義的名稱。

我需要處理兩個事件 - 甚至在同一個字符串中。

感覺馬虎不得不定義一個JS變量並將其傳遞給反斜槓加法器。

是否有一個更清潔的方法來做到這一點與Handlebars或小鬍子?

回答

12

您需要註冊一個操縱上下文的inline helper。在你的情況下,你需要轉義單引號或雙引號。

Handlebars.registerHelper('escape', function(variable) { 
    return variable.replace(/(['"])/g, '\\$1'); 
}); 

通過註冊這樣的幫手,你可以使用它與一個變量來實現你想要的。

{{ escape name }} # expects to escape any ' or " 

我寫了一個簡單的例子來說明這一點上的jsfiddle:http://jsfiddle.net/VLy4L/

+0

感謝您的迴應!不過,我在這裏看到的問題是,我將變量直接添加到onClick事件中作爲表達式,這就是它的中斷點。我周圍看到的唯一方法就是將表達式放入JavaScript中,這種...感覺馬虎。 – Kate

+1

@Kate也許你可以使用['data- *'attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes)臨時存儲數據,然後在javascript中訪問它功能? –

+0

謝謝,Seyeong!我繼續這樣做 - 在將名稱設置爲data- *屬性後,通過onClick事件傳入整個對象。 – Kate

0

我有試圖逃跑單引號的問題,我用的是handleblars提供幫助,您可以用三重括號{{{變量}}}轉義