将JavaScript部署到全局命名空间并调用它?

时间:2013-07-29 21:02:49

标签: javascript ruby-on-rails ruby

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

0 个答案:

没有答案