【发布时间】:2013-09-04 09:59:30
【问题描述】:
我的 Backbone 视图 (file.js) 中有一个函数,其中填充了以下格式的 JSON 响应:-
主干视图中的功能:-
chart_data: function(){
var all_stats = this.collection.toJSON();
$("#page-container").html(this.users_by_loc({
platform_stats: all_stats,
graph_data: all_stats.items.slice(0,5)
// I want to use the top 5 entries to plot graph
}));
}
响应作为 all_stats 的一部分出现(来自我的 api 调用 - 我在服务器端使用 Rails):-
{
"items":
[
{
"loc": "Chennai",
"users": 11707
},
{
"loc": "Hyderabad",
"users": 4327
},
{
"loc": "Pune",
"users": 3625
},....(many more entries)
]
}
现在,我正在尝试将 graph_data 参数(在我上面的 Backbone 视图 中定义)中存在的 json 响应传递给名为 chartData 在我的 jst.ejs 模板中定义(代码如下)。我的 AM 图表 JS 代码使用此变量(chartData)来实际绘制图形。
我的 jst.ejs 文件包含填充图形数据和绘制图形的代码,如下所示:-
<script>
var chart;
chartData = "<%= graph_data %>"
console.log("chartData: ", chartData);
AmCharts.ready(function () {
// SERIAL CHART
chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
//additional code to help plot the chart
chart.write("chartdiv");
});
</script>
<div id="chartdiv" style="width: 60%; height: 400px;"></div>
我的目前的障碍是当我这样做的时候..
chartData = "<%= graph_data %>"
console.log("chartData: ", chartData);
.. 在我的 jst.ejs 模板中,chartData 变量而不是将实际数据作为 all_stats 的一部分(显示为上)在我的萤火虫控制台中返回以下内容:-
chartData: [object Object],[object Object],[object Object],[object Object],[object Object]
我如何正确地将存在于 graph_data 变量中的实际数据(作为我的 backbone 视图 的一部分)分配给变量 chartData 出现在我的 jst.ejs 模板中以绘制图表?
【问题讨论】:
-
你为什么在模板中使用
<script>?为什么不在 JavaScript 中做 JavaScript? -
@muistooshort :我认为你的观点很好,我之前没有想到这一点。假设我在我的 Backbone 视图(js 文件)本身中编写了绘制图表的逻辑,我只需要在我的 Backbone 模板(jst.ejs 文件)中写
<div id="chartdiv" style="width: 60%; height: 400px;"></div>并且这会工作吗? -
可能。您只需在正确的时间调用 Backbone 视图中的图表内容。
-
@muistooshort:我正在尝试,但我现在面临的问题是我的主干视图中的
chart.write("chartdiv");无法识别模板中的chartdiv。是一种我可以将数据分配为我的 AM 图表功能的一部分的方法 2chart.dataProvider属性 n 实现其余的东西 2 在我的 jst.ejs 模板中绘制图表?如果是这样,我应该将我在我的 AM 图表函数中操作的对象作为参数传递给模板,以便稍后我可以使用它来绘制 d 图形。使用这种方法,chartdiv 将被识别为模板中绘图逻辑的一部分。 -
如果调用者要立即将视图放入 DOM 中,请查看 info
_.defer或setTimeout(..., 0)。
标签: javascript json backbone.js backbone-views amcharts