0

我有一个 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() 的函数中,然后在底部调用它。这似乎行不通。关于如何做到这一点的任何建议?

4

0 回答 0