JS + Ajax + Thymeleaf - 从百万富翁上下文中访问JS值

时间:2016-06-02 14:25:53

标签: javascript jquery ajax thymeleaf

我想知道是否有办法从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的实际值并让它正确评估它?

1 个答案:

答案 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>

希望这对你有用吗?