Llamar a un método dentro de una función javascript usando GWT jsni

Lo que quiero es llamar a este código.

public native void eventClickHandler( String id) /*-{
  $wnd.jQuery('#' + id).bind('jqplotDataClick',function(ev, seriesIndex, pointIndex, data) {
    this.@it.codegen.gwt.jqplot.client.charts.JQChart::onClick(Ljava/lang/String;Ljava/lang/String;)(seriesIndex, pointIndex);
  });
}-*/;

Aquí, el método onClick es un método java normal y estoy usando la interfaz GWT y JSNI para esto. ¡Gracias por adelantado!..

preguntado el 03 de mayo de 12 a las 12:05

no funciona, lo siento, creo que olvidé mencionarlo. -

el uso de this es algo arriesgado, ya que se refiere al propietario de la función. es el método JSNI un miembro de un tipo de superposición? adjunte más código de contexto y algunas excepciones generadas, si existen. -

1 Respuestas

¿Has usado jQuery antes? this tiene un significado particular dentro de una función pasada a jQuery. Incluso en JSNI, mientras esté en un archivo Java, no se comportará como un archivo Java. this, pero como un JavaScript this.

Prueba esto en su lugar:

public native void eventClickHandler( String id) /*-{
  var origThis = this;
  $wnd.jQuery('#' + id).bind('jqplotDataClick',function(ev, seriesIndex, pointIndex, data) {
    origThis.@it.codegen.gwt.jqplot.client.charts.JQChart::onClick(Ljava/lang/String;Ljava/lang/String;)(seriesIndex, pointIndex);
  });
}-*/;

contestado el 03 de mayo de 12 a las 17:05

Gracias por la respuesta, pero parece que todavía no funciona, tengo que encontrar una forma de referir métodos dentro de una función jquery. - Shamita Silva

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.