2017-04-13 4 views
1

Ich versuche, Dart-Paket zu verwenden: js, um eine Interop-Bibliothek für JScrollPane zu erstellen, die mit jQuery verpackt ist.Dart JS Interop für die Bibliothek mit jQuery

Hier ist, was ich bisher:

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

Und hier ist der Fehler:

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) 

Und hier ist die JS-Bibliothek - http://jscrollpane.kelvinluck.com/script/jquery.jscrollpane.js

Antwort

2

Element von dart:html ist und nicht annoted mit @anonymous sollten Sie stattdessen das Schlüsselwort dynamic verwenden.

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

UPDATE

Da es eine jQuery-Plugin, ich glaube nicht, können Sie direkt den Zugriff auf das JScrollPane, ich habe noch nie eine jQuery-Plugin wickeln, aber wenn Sie nehmen den Beispielcode von das Plugin:

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

Sie können versuchen, die $ Funktion

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

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

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

Das hat nicht funktioniert. Immer noch der gleiche Fehler. –

+0

Sorry ich ging zu schnell, ich aktualisierte meine Antwort –

Verwandte Themen