Javascript 将列表传递给js、thymeleaf、springboot
我想将一个列表从控制器传递到一个javascript文件,并在js文件中迭代它。 但我在js中只得到了“未定义” 我使用Thymeleaf模板,我的js文件与我的html分开 //控制器Javascript 将列表传递给js、thymeleaf、springboot,javascript,json,list,thymeleaf,modelandview,Javascript,Json,List,Thymeleaf,Modelandview,我想将一个列表从控制器传递到一个javascript文件,并在js文件中迭代它。 但我在js中只得到了“未定义” 我使用Thymeleaf模板,我的js文件与我的html分开 //控制器 List<Bean> list = new ArrayList<Bean>(); model.addAttribute("list", list); 我希望得到month和date的值,有人知道吗?不是将列表放入html元素,而是直接放入Javascript。像这样: <scri
List<Bean> list = new ArrayList<Bean>();
model.addAttribute("list", list);
我希望得到month和date的值,有人知道吗?不是将列表放入html元素,而是直接放入Javascript。像这样:
<script th:inline="javascript">
var list = /*[[${list}]]*/ [];
</script>
<script src="/your_other_javascript_file.js"></script>
var list=/*[[${list}]*/[];
循环不工作的原因是
$('#list').val()代码>不是数组,而是字符串。在字符串上循环不会达到预期效果。没错。但是我想在一个独立的javascript文件(即src=“/your_other_javascript_file.js”)中循环列表,在这里我将用列表中的数据绘制一个图表。我不喜欢在html中绘制你不喜欢在html中绘制它。您正在您的_other_javascript_file.js
中绘制它,这取决于在加载之前已经定义了变量“list”。如果您确实不想这样做,那么您必须使用resolver.setTemplateMode(TemplateMode.JAVASCRIPT)设置一个新的TemplateResolver然后创建一个新的控制器来返回javascript文件。然后可以使用该模型将列表直接传递到javascript中。
var list=$('#list').val();
console.log("list: "+ list);
//[Bean(month=201805, date=2018-05-02),Bean(month=201804, date=2018-05-03)], which is correct
for(var i in list) {
console.log("date: "+ list[i].date); // I got undefined
console.log("month: "+ list[i].month); // I got undefined,too
}
<script th:inline="javascript">
var list = /*[[${list}]]*/ [];
</script>
<script src="/your_other_javascript_file.js"></script>