我在页面上有一个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>
在脚本标签中我想命名函数,但我得到namespace is not defined.
我认为它的jquery试图评估$ {namespace}但我希望freemarker评估它以便函数可以命名空间
知道如何实现这一目标吗?
答案 0 :(得分:0)
由于FreeMarker是服务器端模板语言,因此表达式$ {namespace}应该在JavaScript / jQuery启动之前就已经过去了......换句话说,$ {namespace}将被命名空间变量(FreeMarker)包含的任何内容替换在jQuery可以看到之前......如果你查看呈现的页面源,你会看到什么?
如果您尝试在函数声明之后调用namespace_init()会发生什么情况(不应该是问题因为您没有将函数分配给变量,但谁知道...)
另外,您可以执行以下操作并保存一个&lt; #assign /&gt;:
function ${app.namespace}_init() {
// your init code
}
${app.namespace}_init();