Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在js互操作中将Dart对象传递给js函数_Dart_Dart Js Interop - Fatal编程技术网

在js互操作中将Dart对象传递给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:

我一直在玩dart的新js互操作。到目前为止,一切都很简单。但有一件事我不确定,那就是如何处理js这样的东西:

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对象。每个键都只是一个字符串。