jQuery 和 Dart 与 call() 互操作

jQuery and Dart interop with call()

我正在尝试实现与 Dart 的基本 jQuery 互操作,以便轻松使用 jQuery 插件。

我正在尝试找出一种方法来实现 classical $("#elementID") DOM 查询选择和 $.fn.pluginX.methodY()[=20= 的插件 getter ]

到目前为止我已经开发了这个

@JS()
external JQuery jQuery(String query);

@JS("jQuery")
abstract class JQuery extends intlTelInput.JQuery {
  factory JQuery() {}
  external static Plugins get fn;
}

所以我可以用 Dart jQuery("#elementID") 实现 JS $("#elementID") 和 JS $.fn.pluginX.methodY() 与 Dart JQuery.fn.pluginX.methodY()

但我想在 class 中实现 JQuery("#elemID"),最终代码类似于:

@JS("jQuery")
abstract class JQuery extends intlTelInput.JQuery {
  factory JQuery() {}
  external static JQuery call(String query); // <- this replacing jQuery(..)
  external static Plugins get fn;
}

将名为 call 的静态方法添加到 Dart class 不会使 JQuery 可调用。 好消息是你可以获得与你应该 jQuery 一个 getter 和 returns 一个可调用的 JS 互操作对象相同的效果。

试试这个:

    @JS("jQuery")
    external JQuery get jQuery;

    @JS() @anonymous
    abstract class JQuery extends intlTelInput.JQuery {
      external JQuery call(String query);
      external Plugins get fn;
    }