ich bin ein Upgrade zur Zeit meines GWT 2.7 Projektes 2.8-Beta1 und ich versuche, die Javascript-Plugin Wrapper von JSNI zu JsInterop Refactoring.Wrap einfache JavaScript-Plugin JsInterop mit
Hier die JSNI Wrapper:
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);
}-*/;
}
was ich versucht habe:
@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);
}
Das Problem, ich habe keine Ahnung, wie der Konstruktor zu wickeln. Im JsInterop doc
Eine native @JsType Klasse kann öffentliche native Methoden nur haben, öffentliche und nicht initialisierte Felder, leeren Konstruktor, Finale nicht-native Methoden, die keine andere Methoden nicht außer Kraft setzen,
Also, das ist meine Frage: Wie eine JavaScript-Plugin wickeln, wo in der JS der Konstruktor wie var myPlugin = MyPlugin({option1 : value1, option2 : value2,...});
in JsInterop aussieht?
Vielen Dank für Hilfe :)
Können Sie Ihre MyPluginConfig-Codestruktur freigeben? Ich versuche Optionen an meinen Wrapper zu übergeben, aber es bricht. – xybrek
Hallo können Sie teilen? – xybrek
@xybrek. sollte funktionieren: ' @JsType (isNative = true, namespace = JsPackage.GLOBAL) öffentliche Klasse MyPluginConfig { public String option1; öffentliche int option2; } ' ' MyPluginConfig config = neu MyPluginConfig(); config.option1 = "einige String-Option"; config.option2 = 101; MyPlugin plugin = neues MyPlugin (config); ' – user3233853