如何从Dart拨打这样的代码?
$('.datepicker').datepicker();
我知道我可以使用"包调用函数:js / js.dart"包,像这样
@JS("Plotly.plot")
external plot(DivElement element, List<PlotData> plotData, Margin margin);
...但是在元素上调用函数?
答案 0 :(得分:3)
你所要求的并不是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();
}