簡體   English   中英

Thymeleaf / JavaScript參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM