javascript - D3.js - 格式化数字 - 引发错误

标签 javascript d3.js

我正在使用 angularjs 来开发我的应用程序。我集成了来自 d3.js 的图表,我从 json 中获取了一个数字,需要将其转换为金钱并显示在图表的中心。

我尝试了这样的示例:

var text = group.selectAll("text.title")
            .data(data)
            .enter();

text.append("text")
    .classed("title-total", true )
    .text( function (d, i) {
    if( catg === "payStTotalGraph" )
            var format = d3.format("00,000,0000");
            console.log ( format(123456)); //output as 123,456 instead of 12,356
            return d[i].value;

})
.attr("text-anchor","middle")
.attr("transform", "translate(" + 0 + "," + 20 + ")");

Angular 抛出错误:

TypeError: format is not a function
    at SVGTextElement.<anonymous> (dirProjectSummary.js:328)
    at SVGTextElement._a.text.arguments.length.each.function.n.textContent (d3.min.js:3)
    at d3.min.js:3
    at Y (d3.min.js:1)
    at Array._a.each (d3.min.js:3)
    at Array._a.text (d3.min.js:3)
    at drawPaymentGraph (dirProjectSummary.js:324)
    at dirProjectSummary.js:262
    at Object.m [as forEach] (angular.js:350)
    at Object.<anonymous> (dirProjectSummary.js:250)

在 d3js 中以 Angular 格式化数字的正确方法是什么?

提前致谢。

最佳答案

与 Angular 完全无关。 问题在于您的 if 语句中没有使用 {} 。正确的代码是(至少我认为):

text.append("text")
    .classed("title-total", true )
    .text( function (d, i) {
    if( catg === "payStTotalGraph" ) { // <- opening
            var format = d3.format("00,000,0000");
            console.log ( format(123456)); //output as 123,456 instead of 12,356
            return d[i].value;
    } // <-- closing
})

我认为您的程序的这一小部分尚未完成,因为您仅在 console.log 中使用格式函数。但缺少大括号是导致 TypeError 的原因。

如果您不知道:JavaScript 没有 block 作用域并且变量是提升的。网络上有很多关于 JavaScript 作用域和提升的文章。

关于javascript - D3.js - 格式化数字 - 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693431/

相关文章:

Javascript - 试图延迟遍历 for 循环

javascript - 与非阻塞代码相比,阻塞代码有哪些优点?

javascript - D3 中 tsv 生成的表的自定义排序

javascript - 如何按州和行/列在气泡图中定位气泡

javascript - 从 Meteor 中的地理位置返回邮政编码

javascript - 成功提交表单后如何减少 firestore 中的字段值?

javascript - 在 Node 中使用 d3 读取 csv 数据的最佳实践。为什么会出现 TypeError?

javascript - d3 防止文本延伸到 SVG 之外

javascript - d3.js 散布饼图标签

Javascript变量范围问题?