从 Dart 调用 js
Calling js from Dart
如何从 Dart 调用这样的代码?
$('.datepicker').datepicker();
我知道我可以使用 "package:js/js.dart" 包调用函数,就像这样
@JS("Plotly.plot")
external plot(DivElement element, List<PlotData> plotData, Margin margin);
...但是在元素上调用函数?
你问的不是 100% 清楚,但我认为你是在问如何在 JS 对象上调用任意方法。做到这一点并不容易(最好编写类型化接口)。您有两个选择:
- 使用
package:js/js_util.dart
并调用 callMethod
.
- 写一个
@JS()
-annotated class
你想要的。
对于第一个,你可以这样写:
import 'package:js/js_util.dart' as js;
void openDatePicker(Object elements) {
js.callMethod(elements, 'datepicker', []);
}
...不是超级优雅(或打字很好),但它有效。如果您真的只需要调用一个方法,并且不期望调用其他方法或传递复杂的参数,我只建议这样做。
对于后者,您仍然可以使用@JS()
技术。例如:
@JS()
external JQueryElements $(String selector);
@JS()
// Because this doesn't "really" align to a class in the JS/DOM.
@anonymous
abstract class JQueryElements {
@JS()
external void datepicker();
}
...您可以这样使用它:
void main() {
$('.datepicker').datepicker();
}
如何从 Dart 调用这样的代码?
$('.datepicker').datepicker();
我知道我可以使用 "package:js/js.dart" 包调用函数,就像这样
@JS("Plotly.plot")
external plot(DivElement element, List<PlotData> plotData, Margin margin);
...但是在元素上调用函数?
你问的不是 100% 清楚,但我认为你是在问如何在 JS 对象上调用任意方法。做到这一点并不容易(最好编写类型化接口)。您有两个选择:
- 使用
package:js/js_util.dart
并调用callMethod
. - 写一个
@JS()
-annotatedclass
你想要的。
对于第一个,你可以这样写:
import 'package:js/js_util.dart' as js;
void openDatePicker(Object elements) {
js.callMethod(elements, 'datepicker', []);
}
...不是超级优雅(或打字很好),但它有效。如果您真的只需要调用一个方法,并且不期望调用其他方法或传递复杂的参数,我只建议这样做。
对于后者,您仍然可以使用@JS()
技术。例如:
@JS()
external JQueryElements $(String selector);
@JS()
// Because this doesn't "really" align to a class in the JS/DOM.
@anonymous
abstract class JQueryElements {
@JS()
external void datepicker();
}
...您可以这样使用它:
void main() {
$('.datepicker').datepicker();
}