d3变量等于字符串"函数(d)",而不是函数返回的值

时间:2016-07-23 23:01:02

标签: function variables d3.js

在某些d3js代码中,我使用匿名function(d)从JSON文件返回-importance的值。我使用存储在kwdAssbly对象中的返回值来决定是否渲染图的一部分。

我打破的地方:

kwdAssbly.opt = (function(d){
  return d["-importance"];
});

在对象kwdAssbly上设置监视器时,调试器会显示kwdAssbly.width&的数值。 kwdAssbly.height但显示kwdAssbly.opt = kwdAssbly.opt(d)。我希望字符串值为requiredoptional!如果我在功能中对d进行了观察,则会显示-importance:"optional",但这并未分配给我的kwdAssbly.opt对象属性

为什么将函数声明作为值返回?

这是上下文的代码段:

      .attr("nullAttrib", function(d, i) {  // calculate the  text width and store it
        var kwdAssbly = {}; //the keyword group's height and width object
        kwdAssbly.width = this.getBoundingClientRect().width + padding;
        kwdAssbly.height = this.getBoundingClientRect().height;
        kwdAssbly.opt = (function(d){
          return d["-importance"];
        });

       kwdProps[i] = kwdAssbly;
        if (i>0){
          kwdX += kwdProps[i-1].width;
          if (kwdProps[i].opt == "optional"){
            OptOffset = 40;
            var Lsiding = kwdgrp.append(function(){return sidingL})
              .attr("transform","translate(" + kwdX + ", " + (kwdProps[i].height*2/3 + line1y + OptOffset) + ")");
            var Rsiding = kwdgrp.append(function(){return sidingR})
              .attr("transform","translate(" + kwdX+50 + ", " + (kwdProps[i].height*2/3 + line1y + OptOffset) + ")");
          }
          else {
            OptOffset = 0;
          }             
        }

1 个答案:

答案 0 :(得分:0)

Altocumulus的工作/正确答案:

您不需要匿名函数来获取字符串值。

只需使用kwdAssbly.opt = d["-importance"];

即可