2014-12-22 3 views
0

Я хотел бы послать представление после того, как форма была сохранена в Form Builder, я что-то вроде этого на первый (в моем файле XBL) пытается:Ловля сохранить событие в Form Builder

<xf:action ev:event="fr-data-save-done" ev:observer="fr-form-model"> 
    <xf:message event="#all" level="modal">Saved</xf:message> 
    <xf:send submission="my-submission" ev:event="#all"/> 
</xf:action> 

Приведенный выше код помещенный в файл XBL между xbl: template, вне xbl: model (хотя я попытался поместить его внутри xbl: model без везения). К сожалению, он не работает, после того как я сохранил свою форму в сообщении Form Builder, не отображается. Кто-нибудь понял, почему он не работает?

+1

Где вы размещали этот код? – ebruchez

+0

В настоящее время только между xbl: template. Я попытался переместить его внутри xbl: model, но это не помогло. – pzeszko

+0

Также возникает вопрос: имеет ли значение, какую версию Orbeon я использую? Он не работает под Orbeon 4.7, но, может быть, он под 4,5? – pzeszko

ответ

0

Вы можете разместить вручную обработчик события так:

<foo:bar id="my-component-id" bind="my-bind"> 
    <xf:dispatch 
     event="fr-data-save-done" 
     observer="fr-form-model" 
     name="my-custom-event" 
     targetid="my-component-id"/> 
</foo:bar> 

Обработчик не должны находиться в пределах элемента:

<foo:bar id="my-component-id" bind="my-bind"/> 
<xf:dispatch 
    event="fr-data-save-done" 
    observer="fr-form-model" 
    name="my-custom-event" 
    targetid="my-component-id"/> 

И внутри компонента XBL:

<xbl:binding id="my-binding-id" element="foo:bar"> 
    <xbl:handlers> 
     <xbl:handler event="my-custom-event" phase="target"> 
      ... XForms actions here ... 
     </xbl:handler> 
    </xbl:handlers> 
    ... 
</xbl:binding> 
+0

Эй, Эрик, я только что понял, что не могу выполнить эту работу. Я создал этот пример https://gist.github.com/anonymous/30ab64d3e7642e7860f0, и он не работает: после нажатия кнопки «Сохранить» в Form Builder сообщение не отображается. Если я изменил событие с «fr-data-save-done» на «#all», сообщение «Working» будет показано, чтобы что-то не так с этим событием. – pzeszko

+0

Чтобы быть предельно ясным: когда я меняю событие на сообщение «#all», отображается после нажатия кнопки «Тест», и сообщение не отображается после нажатия «Сохранить». Таким образом, это означает, что обычно обработчик работает, но есть какая-то проблема с 'fr-data-save-done'. – pzeszko

+0

Если что-то еще неясно, я могу объяснить больше, или я могу попытаться создать, может быть, лучший пример, если один выше не достаточно хорош. – pzeszko