Можно ли отправить событие Orbeon в XBL из Javascript? - PullRequest
2 голосов
/ 11 октября 2011

Версия Orbeon: Orbeon Forms 3.8.0.201005270113

У меня есть следующий код в файле Javascript. Этот код выполняется, но похоже, что модель в XBL не найдена.

ORBEON.xforms.Document.dispatchEvent("model-name", "event-name");

Вот модель в XBL. В XBL есть несколько моделей. Я не вижу ни одного сообщения, поэтому кажется, что модель не найдена. Я не вижу ошибок в журналах.

<xforms:model id="model-name" xxforms:external-events="event-name">
  <xforms:action ev:event="event-name">
    <xforms:message>Test</xforms:message>
  </xforms:action>
</xforms:model>

Кто-нибудь знает, есть ли какая-то хитрость в том, чтобы заставить диспетчер работать из Javascript в XBL?

Большое спасибо!

ОБНОВЛЕНИЕ:

Другая проблема, которая может быть проблемой (может быть?), Заключается в том, что вызов javascript из XBL с использованием экземпляра (это) не работает. Интересно, не привязан ли экземпляр класса к экземпляру компонента, поэтому он не может найти модель?

Вот вызов javascript из xbl, который не вызывает метод init:

<xxforms:script>YAHOO.xbl.fr.myTest.instance(this).init();</xxforms:script>

Вот вызов, который вызывает метод init ():

<xxforms:script>YAHOO.xbl.fr.myTest.prototype.init();</xxforms:script>

Вот код JavaScript:

YAHOO.namespace("xbl.fr");
YAHOO.xbl.fr.myTest = function() {};
ORBEON.xforms.XBL.declareClass(YAHOO.xbl.fr.myTest, "xbl-fr-myTest");

YAHOO.xbl.fr.myTest.prototype = {
},

init: function() {
    alert('test');
},

valueChanged: function() {
},

};

1 Ответ

1 голос
/ 12 октября 2011

AFAIK, вы не можете обратиться к внутренней модели XBL напрямую из-за ее сильной инкапсуляции.

Вместо этого вам придется передать событие компоненту xblузел .Например, если вы хотите, чтобы экземпляр fr:currency XBL обрабатывал определенное событие, вам придется отправить событие , чтобы fr:currency element было частью вашей XForm.

Внутри XBL вы можете определить xbl:handler s, чтобы воздействовать на это событие , вызывая какое-либо действие JavaScript или что-то еще.

...