我想知道是否有办法从thymeleaf的内联语法中访问JavaScript对象。
我正在尝试使用JavaScript中的[[@{}]]
语法构建网址。但是,在URL内部,我需要访问JS变量。
以下是代码:
var fieldPathStr = /*[[@{{lessonId}/questions/{questionId}(lessonId=${lesson.id}, questionId=question.id)}]]*/"1/questions/2";
具体来说,它是question.id
是JS变量,但它(显然)只是创建了最终的URL:
1/questions/question.id
有没有办法构造这个赋值语句,以便我可以得到question.id
的实际值并让它正确评估它?
答案 0 :(得分:0)
您可以提取如下值:
var lessonId = [[${lesson.id}]];
var questionId = [[${question.id}]];
但我不确定这是一种方法。如果您正在使用列表,则需要在js中提取它们,这意味着在机器端工作两倍... 有一种方法可以做到这一点,但可能与您的想法有所不同! 我如何管理弹出框以确认从列表中删除项目的示例:
<script th:inline="javascript">
function deleteObject(id) {
bootbox.confirm([[#{msg.ask}]], function(result) {
if (result) {
var url = /*[[ @{'/admin/vozila/izbrisi?vin='} ]]*/ "genericUrl";
url = url+id;
document.location = url;
}
});
};
</script>
完成此操作后,您只需调用它并传递对象ID:
<a class="btn btn-default btn-sm" href="#" th:onclick="'javascript:deleteObject(\'' + ${vozilo.vin} + '\');'"><i class="glyphicon glyphicon-remove"></i><span th:text="#{rad.obr}">Radnja - izbrisi</span></a>
所以你没有在js中渲染百里香,但你在调用时将值传递给函数。 我想在你的情况下,它看起来像这样:
<script th:inline="javascript">
function callLink(lessonID, questionID){
var fieldPathStr = lessonID+/*[[@{'/questions/'}]]*/"1/questions/2";
var finalStr = lessonID+fieldPathStr+questionID;
};
</script>
其中questionID和lessonID应如下所示:
<a href="#" th:onclick="'javascript:callLink(\'' + ${lesson.id} + '\', \'' + ${question.id} + '\');'"></a>
希望这对你有用吗?