java.lang.Throwable:ReferenceError:未定义事件

时间:2015-12-15 09:12:08

标签: java dukescript

如何通过javascript' s event.target.value获取点击的元素文字?

我找到this knockoutjs example并希望将其移植到Dukescript。

这是我的尝试:

HTML

<div class='liveExample'>   
    <h2 class="outmodel" data-bind="value: 'A', click: myFunction">Aaaaa</h2>  
    <h2 class="outmodel" data-bind="value: 'B', click: myFunction">Bbbbb</h2>
    <h2 class="outmodel" data-bind="value: 'C', click: myFunction">Ccccc</h2>
  <hr />
  <h1 data-bind="text: say"></h1>
</div>

爪哇:

package dew.demo.ko4j;

import net.java.html.json.*;
import net.java.html.js.*;

@Model(className="Hello", properties={
  @Property(name="say", type=String.class)
})
final class HelloViaKO {

  @Function public static void myFunction(Hello model){
    model.setSay(getTextValue());
  } 

  @JavaScriptBody(args={}, body = "return event.target.value;")
  private static native String getTextValue();

  static {
    Hello model = new Hello("Hello World!");
    model.applyBindings();
  }
}

你可以在这个Fiddle上看到它,如果你看到控制台出现消息

java.lang.Throwable: ReferenceError: event is not defined

因为java.awt.Event也不存在,我们如何引用this.myFunction = function (data, event)中的事件?

2 个答案:

答案 0 :(得分:1)

你应该使用

@Function public static void myFunction(Hello model, String data) {
  model.setSay(data);
}

正如经典DEW sample所做的那样。

答案 1 :(得分:0)

同样,这个例子在常规DukeScript项目中运行得非常好,但在DEW中失败了。 (可能是时候更新DEW了)