为什么d3在NW.js中不起作用

时间:2016-05-16 21:43:49

标签: d3.js nw.js

[更新] :事实证明npm版本D3不起作用,我改为CDN版本,一切正常,但我仍然想知道require(“d3”)有什么问题

所有

我对NW.js很新,目前我正在尝试使用D3,但即使是基本的d3.select也无法使用,任何想法?使用select的唯一方法是d3.select("body")

<div id="app"></div>

<script>
var d3 = require("d3");
function barChart(){

    var width, height;

    function render(root){


        root.append("svg")
            .attr({
                width:width,
                height:height
            })
            .append("rect")
            .attr({
                width: 0.5*width,
                height: 0.5*height
            })
            .style({
                fill:"red"
            })



    }

    render.width = function(value){
        if(value != undefined){
            width = value;
            return render;
        }
        return width;
    }
    render.height = function(value){
        if(value != undefined){
            height = value;
            return render;
        }
        return height;
    }



    return render;
}


// this does not work
var root = d3.select("#app");
var chart = barChart();
chart.width(400).height(400)
chart(root);

</script>

由于

2 个答案:

答案 0 :(得分:3)

我使用d3安装了npm并且必须写这个以使其正常工作:

win.on('loaded', function() {
    d3_root = d3.select(document);
});

现在我可以使用d3_root.select()代替d3.select

据我所知,这是因为nwjs上下文,你正在研究&#34;服务器&#34;在脚本中,您必须先选择文档。如果直接将代码写入html文件d3.select()应该没问题。

答案 1 :(得分:2)

在nodejs上下文中加载d3。尝试在浏览器上下文中加载它:

.truncate.truncated {
    white-space: normal;
    width: 500px;
}