Je suis en train d'améliorer mon GWT 2.7 projet à 2,8 beta1 et je suis en train de factoriser l'emballage plugin Javascript de JSNI à JsInterop.Wrap plugin simple JavaScript à l'aide JsInterop
Ici l'emballage JSNI:
public class MyPlugin extends JavaScriptObject {
protected MyPlugin(){
}
public static native MyPlugin init(MyPluginConfig config) /*-{
return new $wnd.MyPlugin(config);
}-*/;
public final native void addItem(MyPluginItem item) /*-{
this.addItem(item);
}-*/;
public final native void setEnable(int itemIndex, boolean enable) /*-{
this.setEnable(itemIndex, enable);
}-*/;
}
Ce que j'ai essayé:
@JsType(namespace = JsPackage.GLOBAL, isNative = true)
public class MyPlugin {
public static native MyPlugin init(MyPluginConfig config);
public native void addItem(MyPluginItem item);
public native void setEnable(int itemIndex, boolean enable);
}
Le problème, je ne sais pas comment envelopper le constructeur. Dans le JsInterop doc
Une classe @JsType native ne peut avoir méthodes indigènes publiques, champs publics et non initialisées, vide constructeur, méthodes non indigènes finales qui ne l'emporte pas sur d'autres méthodes,
Alors, voici ma question: Comment envelopper un plugin JavaScript où dans le JS constructeur ressemble à var myPlugin = MyPlugin({option1 : value1, option2 : value2,...});
JsInterop?
Merci pour l'aide :)
Pouvez-vous partager votre structure de code MyPluginConfig? J'essaye de passer des options à mon wrapper, mais c'est cassant. – xybrek
Bonjour pouvez-vous partager? – xybrek
@xybrek. devrait fonctionner: ' @JsType (isNative = true, espace de noms = JsPackage.GLOBAL) public class MyPluginConfig { public String option1; public int option2; } ' ' MyPluginConfig config = nouveau MyPluginConfig(); config.option1 = "option de chaîne de caractères"; config.option2 = 101; MyPlugin plugin = nouveau MyPlugin (config); ' – user3233853