我有一个Rails JS部分,它根据加载到视图中的其他数据进行一些可视化。但是,由于JavaScript在页面加载时执行,我不确定如何在注入partial时执行它。
部分在我的文件夹模型的show动作上执行。它看起来像这样:
$("body").append( "<%=j render :partial => 'contents', :locals => {:folder => @folder } %>" );
$("#jscripts").append("<%=j render :partial => 'show', formats: :js, :locals => {:folder => @folder} %>");
第二行在application.html.erb中的<script>
标记之间添加我的JS部分和我的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()的函数中,然后在底部调用它。这似乎不起作用。关于如何做到这一点的任何建议?