想直接从控制器传递到JavaScript文件。
TestControler.groovy
def list() {
render (view: "list", model:[theId: theId])
}
Test.js
function test() {
// do smth with theId
}
找到的解决方案将渲染的gsp放在中间,即this one,但我想知道是否有办法避免这种情况,包括使用隐藏字段或在gsp文件中包含javascript代码段,如:
<g:javascript>
function test(${theId}) {
// do smth with theId
}
</g:javascript>
答案 0 :(得分:0)
不幸的是,似乎没有任何内容可以涵盖您正在寻找的内容。我见过的最好的方法是使用gsp / html中的隐藏字段,并在客户端从javascript中检索这些值。
答案 1 :(得分:0)
我有类似的问题,这就是我解决它的方式。
说你有这个控制器:
def list() {
render (view: "list", model:[theId: theId])
}
然后在你的视图(list.gsp)
<g:javascript>
var theId = ${theId}
</g:javascript>
然后,外部文件上的函数可以对变量theId
执行任何操作,因为它是全局变量。
function test() {
// do smth with theId
}
就个人而言,我有一个复杂的json对象,所以不是将json编码为html并在客户端需要时将其恢复为json,我只是把它作为js json变量从我的gsp中然后我可以做任何我做的事情希望从客户端