在js互操作中将Dart对象传递给js函数
我一直在玩dart的新js互操作。到目前为止,一切都很简单。但有一件事我不确定,那就是如何处理js这样的东西:在js互操作中将Dart对象传递给js函数,dart,dart-js-interop,Dart,Dart Js Interop,我一直在玩dart的新js互操作。到目前为止,一切都很简单。但有一件事我不确定,那就是如何处理js这样的东西: MathJax.Hub.Config({ showProcessingMessages: false, showMathMenu: false .. many other different options }); MathJax.Hub.Config(new Config( showProcessingMessages: false, showMathMenu:
MathJax.Hub.Config({
showProcessingMessages: false,
showMathMenu: false
.. many other different options
});
MathJax.Hub.Config(new Config(
showProcessingMessages: false,
showMathMenu: false
));
我可以翻译MathJax.Hub.Config部分:
@JS('MathJax') external MathJaxClass get MathJax;
class MathJaxClass {
external HubClass get Hub;
}
@JS('MathJax.Hub')
class HubClass {
external void Config(options);
}
但是现在我想让Config
函数的options
参数成为Dart对象。我不知道该怎么做。唯一的办法是使用地图:
MathJax.Hub.Config(new JsObject.jsify({
'showProcessingMessages': false,
'showMathMenu': false
}));
但这肯定不理想。有什么想法吗?自从最近一次更新以来,@anonymous
注释用于从Dart类而不是工厂构造函数创建JS对象
@JS()
@anonymous
class Config {
external bool get showProcessingMessages;
external set showProcessingMessages(bool value);
external bool get showMathMenu;
external set showMathMenu(bool value);
}
MathJax.Hub.Config(new Config()
..showProcessingMessages= false
..showMathMenu = false
}));
语法如下:
@anonymous
@JS()
class Config {
external bool get showProcessingMessages;
external bool get showMathMenu;
external factory Config({bool showProcessingMessages, bool showMathMenu});
}
这里的Config
名称与任何javascript名称都不匹配,因此您可以随意命名它。你可以这样称呼它:
MathJax.Hub.Config({
showProcessingMessages: false,
showMathMenu: false
.. many other different options
});
MathJax.Hub.Config(new Config(
showProcessingMessages: false,
showMathMenu: false
));
传递给js函数的对象将是常规javascript对象:
JS函数Hub.Config()
期望的参数是什么?@GünterZöchbauer一个参数。只是一个只有数据的常规Javascript对象。每个键都只是一个字符串。