我已经搜索过这个但似乎找不到合适的解决方案。我会笨拙地看一下,看看我哪里出错了。
我正在使用Grails进行项目,我真的非常喜欢它。在我认为难以解决的地方是GSP的。
有人可以告诉我:
控制器:
def index()
{
def message = "This is a test"
[message: message]
}
在视图中
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
$(document).ready(function() {
HOW DO YOU ACCESS THAT VARIABLE IN HERE
});
<body></body>
</html>
我正在尝试提供一些第三方javascript库,我有一个问题试图解决这个问题。是的,我可以手动ajax它或使用第三方库调用ajax thingy。但是,我认为这有一个grails方式,所以我不必做那么多繁重的工作。我的意思是你在那里访问它上面的脚本{}并使所有东西全球化吗?只是想弄清楚这样做的正确方法是什么。
我正在使用的示例库是JQwidgets
库,它具有ajax调用,但我宁愿将数组直接传入Grails中的命名操作。
答案 0 :(得分:0)
您可以这样写:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
$(document).ready(function() {
var message = "${message}";
console.log("I'm from GSP", message);
$("input[selector]").val(message); // Just a dumb example
});
</script>
</head>
<body>
</body>
</html>
答案 1 :(得分:-1)
好的,因为这导致我走上了答案的道路。
密钥是将编解码器stmt放在gsp的顶部。
我不禁想到我一起攻击这个。每当我通过“谷歌”编码时,我发现我不遵循“专业人士”所做的事情。 目前,这似乎解决了这个问题。
控制器
def index() {
def configtree = ConfigTree.list()
[message: configtree as JSON]
}
<%@page expressionCodec="none" %>
<!DOCTYPE html>
...
<script type="text/javascript">
$(document).ready(function() {
var data = ${raw(message)};
// prepare the data
var source =
{
datatype: "json",
datafields: [
{ name: 'id' },
{ name: 'parentid' },
{ name: 'text' },
{ name: 'icon' },
{ name: 'expanded' },
{ name: 'selected' },
{ name: 'iconsize' },
{ name: 'disabled' },
{ name: 'value' }
],
id: 'id',
localdata: data
};
var dataAdapter = new $.jqx.dataAdapter(source);
dataAdapter.dataBind();
var records = dataAdapter.getRecordsHierarchy('id', 'parentid', 'items', [{ name: 'text', map: 'label'}]);