Я интегрировал некоторый код HTML / JS в мое веб-приложение Vaadin, создав компонент AbstractJavaScriptComponent.Компонент почти работает как задумано.
Как вызвать метод passInfo()
, определенный в файле "connector.js", без необходимости вручную нажимать кнопку, определенную в innerHTML компонента "chessControll.JsLabel" в"chessControll.js".Моя цель - передать информацию, когда вызывается событие onChange функции init()
, которое находится в том же файле "chessControll.js", но не является частью компонента.
Я уже пробовалчтобы создать пользовательское событие и затем отправлять его всякий раз, когда вызывается onChange()
в функции init()
, оно работало до тех пор, пока я не прослушивал событие внутри моего компонента (chessControll.js, chessControll.JsLabel).Кажется, к нему можно получить доступ только статическим способом.
Как получить доступ к chessControll.JsLabel в "chessControll.js" из функции init()
, а затем отправить щелчок кнопкой или прослушать события внутрикомпонент для достижения того же?
connector.js:
com_*myname*_*applicationName*_JsLabel = function() {
var mycomponent = new chessControll.JsLabel(this.getElement());
connector = this;
this.onStateChange = function() {
mycomponent = this.getState().boolState;
};
mycomponent.click = function() {
connector.passInfo(true);
};
};
chessControll.js:
var chessControll = chessControll || {};
chessControll.JsLabel = function (element) {
element.innerHTML =
"<input type='button' value='Click'/>";
// Getter and setter for the value property
this.getValue = function () {
return element.
getElementsByTagName("input")[0].value;
};
var button = element.getElementsByTagName("input")[0];
var self = this;
button.onclick = function () {
self.click();
};
};
var init = function() {
var onChange = function() {
/*Click Button defined in JsLabel Component */
};
};$(document).ready(init);