我的页面上有一个 freemarker 模板和 jQuery。
该问题与使用 $
进行评估的两种语言有关
Freemarker 模板
<#assign mode = app.mode>
<#assign namespace = app.namespace>
<#if mode =="view">
<script>
// execute some script..
<script>
<#elseif mode == "edit">
<script>
${namespace}init();
function ${namespace}init(){
//init code..
}
<script>
</#if>
在脚本标签中,我想为函数命名空间,但我得到命名空间未定义。
我认为它的jquery试图评估${namespace},但我希望freemarker评估它,以便该函数可以命名空间
知道如何实现这一目标吗?
最佳答案
由于 FreeMarker 是一种服务器端模板语言,因此在 JavaScript/jQuery 启动之前,表达式 ${namespace} 应该早已消失...换句话说,${namespace} 将被替换为 namespace 变量 (FreeMarker) 包含的任何内容在 jQuery 可以看到它之前...如果查看呈现的页面源代码,您会看到什么?
如果您尝试在函数声明之后调用 namespace_init() 会发生什么(应该不是问题,因为您没有将函数分配给变量,但谁知道......)
另外,您可以执行以下操作并保存一个<#assign/>:
function ${app.namespace}_init() {
// your init code
}
${app.namespace}_init();
关于javascript - 混合 Freemarker 和 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27030961/