如何将值直接从控制器传递到Grails中的javascript文件

时间:2015-03-12 17:26:53

标签: javascript grails groovy

想直接从控制器传递到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>

2 个答案:

答案 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中然后我可以做任何我做的事情希望从客户端