关于js变量的对enjoy模板引擎变量赋值问题

项目需要更新页面中form的数据内容,于是想将ajax返回json数据赋值给页面中原有的enjoy模板变量Qualifylist,于是想用#set指令执行#set(Qualifylist = data)。

但提示错误 com.jfinal.template.stat.ParseException: Expression error: can not match the symbol ":"

data和Qualifylist都是json格式,请问这种赋值应该怎么处理?

    


评论区

konguwmang

2022-06-17 18:37

我用了layui作为前端,因为我无法直接使用js变量赋值,故set命令的中js变量利用了laytpl模板#set(Qualifylist = {{data}})。

JFinal

2022-06-17 18:37

提示信息你的 enjoy 表达式有错误, 检查表达式中的冒号字符 ':' ,这个字符前后组合而成的表达式不符合格式

例如: #( x : ) 这表表达式 x 后面多一个冒号无法匹配

再例如: #( x ? y ) 这表表达式 y 后面缺少一个冒号无法匹配

JFinal

2022-06-17 18:38

@konguwmang enjoy 不支持这种表达式: #set(Qualifylist = {{data}})。

在指令小扩号内的属于 enjoy 表达式,需要遵守表达式语法,而 {{data}} 语法错误

你是不是想这么来用:
#set(Qualifylist = "{{" + data + "}}" )

konguwmang

2022-06-17 18:57

@JFinal 谢谢波总的回复,因为laytpl引擎的变量输出格式就是{{data}}的形势,类似jfinal的#(data),所以用了这样的方式。请问波总,data变量对Qualifylist的赋值jfinal有方法吗

JFinal

2022-06-17 19:03

@konguwmang jfinal enjoy 是在后端起作用,后端生成完 html 内容以后才交给 laytpl 去使用

所以,你只要想办法用 enjoy 生成 laytpl 能用的格式就行,一定要将后端与前端区分开来,有一个先后次序问题,工作次序不要搞反,也不要搞混

konguwmang

2022-06-17 19:05

明白了,感谢波总的点拨