javascript - 从 lift snippet 中获取 d3 中的 json 数据

标签 javascript scala d3.js lift lift-json

我目前正在使用 d3 和数据的 json 对象实现一个图表。可以在此处找到此类图表的工作示例: http://bl.ocks.org/950642 。如果您了解 d3,您当然可以直接跳到我的问题部分。

代码快速概述

所以,基本上在我的模板中我有最少的必要代码:

<div id="main" class="lift:surround?with=default;at=content">
  <div class="lift:GraphVisual.showGraph"></div>
</div>

然后在我的代码片段 (GraphVisual.scala) 中,我有以下内容:

def showGraph = {
  <h3>Bachelor 5/6 - Communication Systems</h3> ++
  <div id="graph-container" width="500px" height="100px">
    <script type="text/javascript" src="static/scripts/graph_script.js></script>
  </div>  

在定义图形的javascript文件(graph_script)中,我主要有以下内容

var vis = d3.select("#graph-container").append("svg:svg")

d3.json("static/scripts/jsonData.json", function(json) {
  //Do stuff
}

我的问题

如果我将 json 数据存储在文件中,如上所示,一切正常。现在我想用 lift 生成我的 json 对象。所以我想要一个函数返回 Lift 中图形的 json 对象表示形式,并在脚本中使用它(应该是静态的)。

我尝试了什么

假设我有以下值定义我的图表:

val graph = JObject(JField("nodes", JArray(List(...))), JField("links", JArray(List)))

我尝试将此图定义为 d3 脚本上方脚本中的变量:

<script>{JsCrVar("myGraph", graph).toJsCmd}</script>

通过此方法,我拥有定义良好的变量 myGraph,但我不知道如何在 graph_script.js 中访问它

最佳答案

您可以将 json 数据检索移至 REST API。

object MyGraphApi extends RestHelper {
   serve {
     case Req("graph" :: Nil, _, GetRequest)  => {
       JsonResponse(myGraphObject)
     }
   }
}

然后你可以使用/graph url ajax 将其拉入页面内。

关于javascript - 从 lift snippet 中获取 d3 中的 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800612/

相关文章:

javascript - DataTables 正则表达式搜索无法按预期精确匹配

javascript - 上传图片并显示预览

scala - Scala 中两个标签中最不常见的 TypeTag?

javascript - D3.js 轴不支持 SVG 大小

javascript - jQuery 无法在 iframe 中找到 .find() 元素

javascript - Firefox 类型错误 : ServiceWorker script encountered an error during installation

string - Scala - 从字符串中获取最后两个字符

xml - Scala 2.9.x 中的 XML 支持状态

excel - Excel 中的 D3.Js 图表

javascript - 需要 d3 刷才能在触摸设备上工作