[英]Thymeleaf/JavaScript Parameters
我已經使用SO一段時間了,並且找到了解決我大多數問題的方法,但是現在我對所找到的答案之一有疑問。
(原文: Thymeleaf:可點擊的行 )
第二個答案為我的問題提供了一個強大的解決方案,但我真的很想了解它的工作方式和原因。
<tr th:each="item : ${itmes}" th:onclick="'javascript:rowClicked(\\'' + ${item.someField} + '\\');'"> ... <td>Some data</td> ... </tr>
這里的\\''
和'\\'
字符是什么?沒有它們,為什么傳遞的參數不起作用? 我事先嘗試了谷歌搜索,但沒有發現任何特別有用的方法,但這可能是因為我沒有提出正確的問題。
謝謝你的幫助。
我發現報價過多。 需要足夠的引號,因此您最終獲得
th:onclick="'javascript:rowClicked('someString');"
實際上,您可以刪除javascript:
標簽,只需要
th:onclick="'rowClicked(\'' + ${item.someField} + '\');"
假設有些引號在您的示例中看不到。
我會親自為item.somefield設置數據屬性,並
th:onclick="rowClicked(this);"
並且在rowClicked中有
function rowClicked(row) {
var val = row.getAttribute("data-item");
關鍵是要生成一個像這樣的字符串:
rowClicked('somefield');
它由與+
運算符連接在一起的三個字符串構成:
'rowClicked(\''
${item.someField}
'\');'
第一部分和最后一部分是用單引號'
括起來的字符串,但是由於您需要在輸出中使用單引號,因此會添加\\'
(表示轉義的單引號)-因此第一個字符串是rowClicked('
,最后一個');
。 之后,將所有內容連接在一起: rowClicked('somefield');
我認為有些替代方法更易於閱讀。 例如,您可以改用文字替換 ,它看起來像這樣:
th:onclick="|rowClicked('${item.someField}');|"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.