在@PostConstruct中调用JSNI方法 - Errai
问题描述:
我在尝试使用Errai从Java调用JS函数的问题2.3.2 我正在使用Bootstrap开关,并且需要调用JS函数才能激活它。我需要在创建页面之后执行此操作,并将所有元素都附加到DOM元素。在@PostConstruct中调用JSNI方法 - Errai
我试过这一切:@PostConstruct,@PageShowing,@PageShown,onAttach()..但没有一个为我工作。
我有这样的:
@Override
public void onAttach(){
enableToggleSwitch();
}
public static native void enableToggleSwitch() /*-{
$wnd.enableToggle();
}-*/;
,当我调试它,它似乎是这些元件被附接到DOM之前onAttach()方法被调用。
任何想法?
答
您不应该重写Widget类的onAttach()方法。如果您想要在附加小部件的情况下执行某些操作,请覆盖onLoad方法。
/**
* This method is called immediately after a widget becomes attached to the
* browser's document.
*/
protected void onLoad() {
enableToggleSwitch();
}
试试这个。
如果这不能解决你的问题,你可以尝试使用计划:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
enableToggleSwitch();
}
});
谢谢!我在onAttach()方法中使用了Scheduler。有用! –
@ el-hoss为什么“不应该覆盖onAttach()”的任何特定原因:-) – xybrek
onLoad()在连接所有Widgets并设置附加标志后调用。看看Widget.java。这是正确的地方,当你的widget被连接时做一些事情。 –