GWT JSNI jquery,使用ui:field选择回调中的元素not work

GWT JSNI jquery,使用ui:field选择回调中的元素not work,gwt,jsni,Gwt,Jsni,我想知道为什么bind操作在回调中无法选择该元素时有效,以及任何解决方法。谢谢 编辑: 将起作用,但不知道原因,有人能解释一下吗?由于在单击回调之前对bindActions进行了评估,因此回调没有机会在传递给方法时的状态下访问输入 这样做的唯一方法是通过持有引用(就像您聪明地做的那样)锁定状态,或者将整个绑定包装在一个闭包中(非常繁琐和冗余),如下所示: 私有本机void bindActions(JavaScriptObject保存,JavaScriptObject输入)/*-{ (功能(中){

我想知道为什么bind操作在回调中无法选择该元素时有效,以及任何解决方法。谢谢

编辑:


将起作用,但不知道原因,有人能解释一下吗?

由于在单击回调之前对
bindActions
进行了评估,因此回调没有机会在传递给方法时的状态下访问
输入

这样做的唯一方法是通过持有引用(就像您聪明地做的那样)锁定状态,或者将整个绑定包装在一个闭包中(非常繁琐和冗余),如下所示:

私有本机void bindActions(JavaScriptObject保存,JavaScriptObject输入)/*-{
(功能(中){
$wnd.$(保存)。单击(函数(){
$wnd.alert($wnd.$(in.size());
});
})(输入);
}-*/;
这都是关于背景的;请记住,在回调中,您指的是函数所有者(即保存按钮)。请参阅有关此主题的详细信息

public class SettingMailPage {
    @UiField
    ButtonElement save;
    @UiField
    AnchorElement input;


    SettingMailPage()
    {
       bindActions(save.cast(),input.cast());
    }


    private native void bindActions(JavaScriptObject save, JavaScriptObject input)
    /*-{
          $wnd.$(save).click(function () {
            $wnd.alert($wnd.$(input).size());//always 0, why?
          });
    }-*/;
}
   private native void bindActions(JavaScriptObject save, JavaScriptObject input)
    /*-{
          var thatInput=input;
          $wnd.$(save).click(function () {
            $wnd.alert($wnd.$(thatInput).size());
          });
    }-*/;