在 JavaScript 库容器中存储和检索 Google Dart 对象
在 Dart 应用程序中,我使用外部 JavaScript 库进行各种矩阵计算。
库的具体功能并不重要,重要的是我需要存储和检索放入矩阵中的 Dart 对象。
Dart Class - 让图像我有一个 dart 对象,它有一个名为 name 的参数
MyDartClass mydc = new MyDartClass(something, something);
mydc.name;
// Everything works as planned
存储
matrix = js.context.matrix
matrix.cell(1,1).store("thing", new MyDartClass(something, something));
检索
matrix.cell(1,1).has_object_of_type("thing");
// true
MyDartClass mydc = matrix.cell(1,1).retrieve("thing");
对对象做某事
mydc.name;
// Exception: The null object does not have a getter 'name'.
// NoSuchMethodError : method not found: 'name'
// Receiver: null
// Arguments: []
图书馆真的有用吗?
是的,它确实。我在纯 javascript 中做了很多次完全相同的事情,并且有很多测试来测试行为(在 Javascript 中)
飞镖坏了吗?
当我尝试使用 javascriptified Hash 来做同样的行为时,它就像一个魅力。
var options = js.map({ 'dart' : new MyDartclass(something, something));
var y = options["dart"];
js.context.console.log(y.name);
// Name is printed
你从检索中得到什么?
似乎我得到了某种 Dart 代理
MyDartClass mydc = matrix.cell(1,1). retrieve("thing");
js.context.console.log(mydc);
DartProxy {id: "dart-ref-20", port: DartSendPortSync}
id: "dart-ref-20"
port: DartSendPortSync
__proto__: DartProxy
我相信该库将对象深深地存储在哈希图中。但似乎当我将对象检索到 Dart 中时,我得到了一些东西,但不是以我可以使用它的方式。所以我需要帮助,因为我不知道如何使它工作。
- 我需要取消代理对象吗?
- 当您尝试从对象内部的哈希中检索对象时,这可能是一个 Dart 错误
- 也许我误解了这不应该工作的一切。