从Dart

时间:2018-05-21 14:42:47

标签: javascript dart angular-dart

如何从Dart拨打这样的代码?

$('.datepicker').datepicker();

我知道我可以使用"包调用函数:js / js.dart"包,像这样

@JS("Plotly.plot")
external plot(DivElement element, List<PlotData> plotData, Margin margin);

...但是在元素上调用函数?

1 个答案:

答案 0 :(得分:3)

你所要求的并不是100%清楚,但是我想你在询问如何在JS对象上调用任意方法。这样做并不容易(编写类型接口更好)。您有两种选择:

  1. 使用package:js/js_util.dart并调用callMethod
  2. 为您想要的内容写一个@JS()-annotated class
  3. 首先,您可以写下以下内容:

    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();
    }