Взаимодействие Dart JS для библиотеки с использованием jQuery
Я пытаюсь использовать пакет Dart: 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
1 ответ
Решение
Element
из dart:html
и не помечены @anonymous
, вы должны использовать dynamic
ключевое слово вместо
@JS()
class JScrollPane {
external JScrollPane(dynamic element, JScrollPaneSettings settings);
}
ОБНОВИТЬ
Поскольку это плагин 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();
}