2017-11-24 7 views
0

Ich versuche, grundlegende jQuery Interop mit Dart zu machen, um jQuery Plugins leicht zu verwenden.jQuery und Dart Interop mit Call()

Ich versuche, die klassische erreichen einen Weg, um herauszufinden, beide $("#elementID") DOM Abfrage Auswahl und die Plugins Getter von $.fn.pluginX.methodY()

Bisher habe ich diese

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

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

So kann ich erreichen, JS entwickelt haben $("#elementID") mit Dart jQuery("#elementID") und JS $.fn.pluginX.methodY() mit Dart JQuery.fn.pluginX.methodY()

Aber ich woul d mögen JQuery("#elemID") mit etwas in der Klasse zu erreichen, wie die endgültige Code mit sorta:

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

Antwort

1

eine statische Methode hinzufügen Anruf zu einem Dart Klasse mit dem Namen nicht JQuery aufrufbar machen. Gute Nachrichten können Sie den gleichen Effekt erreichen, Sie sollten jQuery nur einen Getter machen, der ein JS-Interop-Objekt zurückgibt, das aufrufbar ist.

Versuchen Sie stattdessen:

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

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