繁体   English   中英

使用jQuery的Dart JS互操作库

[英]Dart JS interop for library using jQuery

我正在尝试使用Dart的package:js为JScrollPane创建一个互操作库,该库由jQuery包装。

这是我到目前为止的内容:

@JS()
library jscrollpane;

import 'dart:html';

import 'package:js/js.dart';

@JS()
@anonymous
abstract class JScrollPaneSettings {
    external factory JScrollPaneSettings({bool showArrows});

    external bool get showArrows;

    external set showArrows(bool value);

}

@JS()
class JScrollPane {
    external JScrollPane(Element element, JScrollPaneSettings settings);
}

这是错误:

Not a valid JS object

STACKTRACE:
#0      JsNative.callConstructor (dart:js:1461)
#1      JScrollPane.JScrollPane (package:portal/base/views/scrollbar/jscrollpane.dart_js_interop_patch.dart:13:30)

这是JS库-http://jscrollpane.kelvinluck.com/script/jquery.jscrollpane.js

Element来自dart:html ,并且未使用@anonymous进行@anonymous ,您应该改用dynamic关键字。

@JS()
class JScrollPane {
  external JScrollPane(dynamic element, JScrollPaneSettings settings);
}

UPDATE

由于它是一个jQuery插件,所以我认为您不能直接访问JScrollPane,因此我从未包装过jQuery插件,但是如果您使用该插件的示例代码:

$('.scroll-pane').jScrollPane();

您可以尝试包装$函数

@JS('\$')
external jQuery(query);

@JS()
@anonymous
class JScrollPaneElement {
  external jScrollPane();
}

void main() {
  JScrollPaneElement scrollPane = jQuery('.scroll-pane') as JScrollPaneElement;
  scrollPane.jScrollPane();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM