Grails - 从控制器传递String值到视图,并在JS中使用逻辑值

时间:2017-10-09 19:56:28

标签: javascript grails

在将模型传递给我的控制器视图后使用Grails

<g:render template="editor-template" model="[id: asset.key, json: someJson as grails.converters.JSON]"></g:render>

我可以在JS中访问它,因为我可以记录它:

console.log("ID for editorSetup: ${id}");

日志

ID for editorSetup: episode1

然而,下一行试图对此进行一些操作,无论是将值赋值给新变量,还是对其进行方法调用,例如

var id = ${raw(id as String)}

导致

ace:251 Uncaught ReferenceError: episode1 is not defined
    at ace:251

我想要的是能够使用String literal&#34; episode1&#34;调用另一个方法来查找具有此ID的元素。如果我尝试直接调用该方法,我会得到与尝试将新变量设置为其值时相同的结果。

我试过了:

  • 使用as String
  • 从控制器传递
  • 在js中使用${id}
  • 在js中使用.toString()
  • 在js中使用.val()
  • 在js中使用.valueOf()

任何其他想法赞赏!感谢

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但我认为您可以将 id 变量放入页面上的隐藏字段中:

<input id="id-field" value="${id}"/>

然后在js中检索其值。它应该被视为文字字符串。

答案 1 :(得分:0)

您已通过以下模型传递数据

Array ( 
   [Pakistan] => Array ( 
        [impression] => 110 
        [request] => 8 
        [click] => 5 
    ) 
    [India] => Array ( 
        [impression] => 20 
        [request] => 50 
        [click] => 5 
    ) 
)

您只需在javascript中访问这些数据,如下所示: 声明全局变量以在页面中的任何位置访问这些数据,如下所示,

model="[id: asset.key, json: someJson as grails.converters.JSON] 

现在,您可以在JS中访问这些变量的值。