我有一个 Rails JS 部分,它根据加载到视图中的其他数据进行一些可视化。但是,由于 JavaScript 在页面加载时执行,我不确定如何在注入部分时执行它。
部分在我的文件夹模型的显示操作上执行。它看起来像这样:
$("body").append( "<%=j render :partial => 'contents', :locals => {:folder => @folder } %>" );
$("#jscripts").append("<%=j render :partial => 'show', formats: :js, :locals => {:folder => @folder} %>");
第二行将我的 JS 部分附加<script>
到 application.html.erb 中的标记之间的其余 JS 中。我的 _show.js.erb 部分看起来像这样:
d3Code = function(){
d3.json("/folders/<%= @folder.id %>.json"), function(error, data) {
if (error) return console.warn(error);
var svg = d3.select("svg"),
folderChildren = [],
circle;
var submissions = data.submissions;
for(submission in submissions) {
var submissionWords = submission.content.split(' ').join('');
var size = submissionWords.length;
folderChildren.push(size);
};
circle = svg.selectAll("circle")
.data(folderChildren)
.enter().append("circle")
.attr("cy", 90)
.attr("cx", String)
.attr("r", Math.sqrt);
circle.exit().remove();
};
};
d3Code();
如您所见,我将它包装在一个名为 d3Code() 的函数中,然后在底部调用它。这似乎行不通。关于如何做到这一点的任何建议?