javascript - 从 dart 创建 javascript 对象

标签 javascript dart

我有一个 Dart 应用程序,它读取数据并从 javascript 调用方法以从该数据中绘制一棵树(在 D3 中) 我想在 Dart 端创建 js 对象并在 javascript 端绘制它。

但是在 Dart 方面我得到了预期的结果并且无法正确转换为 js 对象..

JavaScript:

var treeRoot  = [{}]; // <-- I want to fill this object on Dart side

function updateTree() {    
  var nodes = tree.nodes(treeRoot).reverse(), // <- use this object on js side
  links = tree.links(nodes);
  // .. code for tree drawing
}

Dart :

Future _showTree() async {
    var treeData = getTreeData();

    // try to fill js object with my data
    js.context['treeRoot'] = new js.JsObject.jsify([treeData]);

    // DART PRINT
    var treeRoot = await js.context['treeRoot'];
    print('dart : treeRoot\n' + treeRoot.toString());

    js.context.callMethod('updateTree');

 }

作为 DART PRINT 的结果,我看到了我所期望的:

dart : treeRoot
[name: A 1
  child: {
    name: B 1
    child: {
      name: D 1
    }
    child: {
      name: E 1
    }
  }
  child: {
    name: C 1
  }
]

但是当我从控制台查看 treeRoot(检查 js 对象)时,我得到了

[DartObject
o: Tree
__proto__: DartObject]

(Tree 是 Dart 中的 getTreeData() 类型)

如何获得在 DART PRINT 中打印的格式的对象?我想将它用作简单的 js 对象,忘记 js 端的任何 dart 对象。 (当我查看那个 'o' 对象时,我没有看到 'child' 和 'name' 属性,还有很多其他东西)

小提示:我知道 json 可以用于该通信,但我想要没有任何 json 转换的 js 对象。

最佳答案

正如 Gunter 所建议的,我应该使用 dart-js-interop。 所以我在 dart - JsTree 中创建了 js 对象。为了填充数据,我遍历了树。

对象声明如下:

@anonymous
@JS()
class Tree {
  external String get name;
  external set name(String value);

  external List<Tree> get children;
  external set children(List<Tree> value);
}

@JS()
external buildTree(Tree tree);

在 Dart 中我调用:

Tree jsTree = copyDartTree(treeData);
// call js function
buildTree(jsTree);

关于javascript - 从 dart 创建 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376578/

相关文章:

javascript - Node - 不能要求 ('./index.js' ) 在同一文件夹中

javascript - 发生更新数据属性的 keyup 事件后脚本不触发

flutter - 如何在渲染之前获取文本小部件的宽度

flutter - 如何在下一页中打开视频?

javascript - Angular 4 无法使用 ViewChild 读取未定义的属性 nativeElement

javascript - 从 Javascript 中的值获取 div 元素的填充

javascript - 为什么这段 JS 代码会失败?

dart - 请在这里解释一下 Dart 中 Futures 的行为

flutter - 打开页面时如何始终设置状态?

flutter - 在扩展图 block 中循环json