【问题标题】:Grails - access http data in javascriptGrails - 在 javascript 中访问 http 数据
【发布时间】:2015-01-13 06:19:50
【问题描述】:

这对我来说似乎应该很简单,但我很挣扎!我正在开发我的第二个 grails 应用程序,第一个使用 angular.js,但由于旧版浏览器的要求,我这次不能。我已经使用 .gsp 模板钩子(g:each、g:if 等)和一些 JQuery 构建了一些页面模板来做一些基本的演示工作。现在的问题是我需要在我的 JavaScript 中使用 .gsp 正在访问的数据(基本的 http get 请求以及页面加载)。

我可以让控制器将数据呈现为 JSON,但随后 grails 模板挂钩将停止工作。

我可以从 DOM 中获取所有值并在 JS 中构建一个本地模型,或者我可以使用 .gsp g:each 对输出数据进行一些可怕的混合,然后将每个值保存到 JS 内联,但这两个过程看起来都很荒谬.

我可以让控制器响应 .gsp 的数据并为 JS 分别呈现为 JSON,但这似乎是错误的!

我不知道如何做到这一点,请提供任何建议!

【问题讨论】:

  • 你不能使用data-属性吗?
  • 这就是我在看到下面Donal的回复后现在正在做的事情。虽然我正在处理大型数据表,但似乎要走很长一段路,所以我必须非常小心我的命名。我所希望的是一种简单的方式来访问完整模型,包括它的所有属性,而不必从它的组成部分重新构建它。

标签: javascript jquery json grails


【解决方案1】:

使用返回此模型的操作的简单示例

def myAction() {
  [name: 'bob']
}

你基本上有两个选择

1.将数据存储在 JavaScript 变量中

<script type="text/javascript">
  var name = '${name}';
  // now do something with the name
</script>

2。将数据存储在 data- 属性中

<div id="name" data-name="${name}"></div>

然后您可以使用 JavaScript/jQuery 读取名称

var name = $('#name').data('name');

【讨论】:

  • 谢谢@Dónal - 我现在选择选项 2。必须手动设置每个变量形成一个巨大的数据集,然后必须在 JS 中将其编译成一个不错的数据模型,这就像把鲸鱼扔到海滩上一样......特别是在角度工作之后。我想这就是向后兼容的代价!
  • @bitfidget 我看不出手动设置每个 data- 属性比为每个属性创建一个 JS 变量痛苦得多。就个人而言,我更喜欢使用 JSON 而不是这些选项中的任何一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 2016-08-19
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多