Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3.js Dart+js_interop+d3=(帮助我解释x=NAN,y=NAN)_D3.js_Dart_Dart Js Interop - Fatal编程技术网

D3.js Dart+js_interop+d3=(帮助我解释x=NAN,y=NAN)

D3.js Dart+js_interop+d3=(帮助我解释x=NAN,y=NAN),d3.js,dart,dart-js-interop,D3.js,Dart,Dart Js Interop,我正在尝试使用D3编写一些dart代码,但是当我调用D3.layout.force.start时,我遇到了非常奇怪的问题。在下面的代码中,我注释掉了force.size以下的所有内容。当我运行这段代码并在浏览器中查看控制台输出时,我会得到单个js.context.console.log的结果,它会打印出我的对象,就像分配word_map时所写的那样。问题是,只要我取消注释force.start,只需一行,顺便说一句,对象word_映射就会开始更改,console.log就会打印出一个x和y值为N

我正在尝试使用D3编写一些dart代码,但是当我调用D3.layout.force.start时,我遇到了非常奇怪的问题。在下面的代码中,我注释掉了force.size以下的所有内容。当我运行这段代码并在浏览器中查看控制台输出时,我会得到单个js.context.console.log的结果,它会打印出我的对象,就像分配word_map时所写的那样。问题是,只要我取消注释force.start,只需一行,顺便说一句,对象word_映射就会开始更改,console.log就会打印出一个x和y值为NAN的对象

为什么force.start会将我的对象的x和y值更改为NAN?当console.log在调用force.start之前很久出现时,该更改如何显示在我的console.log语句中。这就像是先调用force.start,然后再调用console.log一样

import 'dart:html';
import 'package:js/js.dart' as js;
import 'dart:async';
import 'dart:js';

List<Map<String, String >> word_map;

void main() {
   draw_visualization();
}

void draw_visualization(){
   word_map =new List<Map<String,String>>();


word_map= [{'word':'hello','x':30.0,'y':20.0, 'fixed':false}];
  JsObject word_list_js = new JsObject.jsify(word_map);
  js.context.console.log(word_list_js);

  print ("Made it here first");
  var force = d3.layout.force()
      .nodes(word_list_js)
      .links(js.array([]))
      .size([600,400]);
      /* .start();


 var chart = d3.select("body")
      .append("svg")
      .attr('width', 600)
      .attr('height', 400);


  var node = chart.selectAll('.node')
        .data(word_list_js).enter().append('circle')
        .attr('class','node')
        .attr('r', 5)
        .attr('cx', new js.FunctionProxy((d,i,e){return d.x;}))
        .attr('cy',new js.FunctionProxy((d,i,e){return d.y;}))
        .style('fill', 'blue')






  force.on('tick', new js.FunctionProxy((e){


    node.attr("cx", new js.FunctionProxy((d,i,e){
            if (d.x > 0 && d.x<4000){print(d.x);}
              return d.x;
            }))
        .attr("cy", new js.FunctionProxy((d,i,e){
              return d.y;
            })
        );

  }));
*/    
}
我必须承认,我对整个代理系统的工作原理有点困惑,Dart的异步也给我带来了一些麻烦。我只是不知道force.start函数会如何影响前面的console.log语句

总的来说,我只是希望我的物体不要被原力布局搞得乱七八糟。NAN代表x,为什么要这样做,使我的圆不能正确绘制

编辑:这似乎与重力有关。在添加之前的.gravity0之后。start不会将x和y计算为nan。我这样做是因为我预感到两种部队布局中的一种是造成问题的原因。我仍然不明白为什么gravity0会解决这个问题。

你不应该混合使用package:js和dart:js

删除导入“dart:js”;。 用js.mapword\u映射替换新的JsObject.jsifiWord\u映射
我对Dart没有任何经验,但它可能覆盖了D3所依赖的一些东西。你有没有试过从网站上拿任何一个例子,看看它们是否正常运行?这基本上就是我正在做的。可悲的是,我不能直接把ex从网站上删除,因为我需要将其转换为dart代码并使用代理。