商店和JavaScript庫容器存儲和檢索谷歌飛鏢對象的JavaScript庫容器
在我使用的是外部JavaScript庫做各種矩陣計算DART應用程序獲取谷歌飛鏢對象。
庫的特定功能並不重要,重要的是我需要存儲和檢索放入矩陣中的Dart對象。
達特類 - 允許圖像我有一個鏢對象,該對象具有稱爲名稱
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)
Dart Broken?
當我嘗試使用javascripti Hash來做同樣的行爲時,它就像一個魅力。
var options = js.map({ 'dart' : new MyDartclass(something, something));
var y = options["dart"];
js.context.console.log(y.name);
// Name is printed
你從檢索中得到什麼?
看來,我獲得某種飛鏢代理的
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
我相信是的lib存儲對象,在內心深處,在一個哈希表。但是,當我將對象放入Dart時,我似乎得到了一些東西,但並不是我可以使用它的方式。所以我需要幫助因爲我不知道如何使它工作。
- 是否需要刪除對象?
- 也許這是一個飛鏢錯誤,當你嘗試從對象內部的哈希中檢索對象
- 也許我錯過了一切,這是不應該工作。
嗨亞歷山大。感謝你的回答。我在https://github.com/dart-lang/js-interop/issues/80創建了一個問題。這幾乎是答案的後半部分,並回到這個問題。最好的問候喬納斯 –