我一直在玩新的js interop of dart。到目前为止,一切都非常直截了当。但有一点我不确定如何处理这样的js:
MathJax.Hub.Config({
showProcessingMessages: false,
showMathMenu: false
.. many other different options
});
我可以翻译MathJax.Hub.Config部分:
@JS('MathJax') external MathJaxClass get MathJax;
class MathJaxClass {
external HubClass get Hub;
}
@JS('MathJax.Hub')
class HubClass {
external void Config(options);
}
但是现在我希望将options
函数的Config
参数作为Dart对象。我不知道该怎么做。唯一的方法是,我可以使用Map
:
MathJax.Hub.Config(new JsObject.jsify({
'showProcessingMessages': false,
'showMathMenu': false
}));
但这肯定不理想。有什么想法吗?
答案 0 :(得分:1)
自最近更新以来,@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
}));
答案 1 :(得分:1)
语法如下:
@anonymous
@JS()
class Config {
external bool get showProcessingMessages;
external bool get showMathMenu;
external factory Config({bool showProcessingMessages, bool showMathMenu});
}
此处Config
名称与任何javascript名称都不匹配,因此您可以根据需要为其命名。然后你可以这样称呼它:
MathJax.Hub.Config(new Config(
showProcessingMessages: false,
showMathMenu: false
));
传递给js函数的对象将是一个常规的javascript对象: