Учебник по Showcase: События и действия

Материал из Course Orchestra
Перейти к: навигация, поиск

Внимание! Изложенная здесь информация устарела! В качестве учебника следует использовать https://share.curs.ru/webhelp/ (work in progress).


xml с данными:

<schema xmlns="">
   <info>
      <name/>
      <age/>
   </info>
</schema>

Шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:xf="http://www.w3.org/2002/xforms">
    
    <head>
        <xf:model id="mainModel">  
                  
            <xf:instance id="mainInstance">
                <schema xmlns=""/>
            </xf:instance>  
                      
            <xf:action ev:event="xforms-ready">
                <xf:setvalue if="/schema/info/name = ''" ref="/schema/info/name"
                    value="'Какое-то имя'"/>
                <xf:action if="/schema/info/name = '0'">
                    <xf:setvalue ref="/schema/info/name" value="'Ненулевое имя'"/>
                </xf:action>
            </xf:action>
            
        </xf:model>
    </head>
    <body>
        <div> Имя: </div>
        <div>
            <xf:input ref="/schema/info/name">
                <xf:action ev:event="xforms-value-changed">
                    <xf:message>Значение было изменено</xf:message>
                </xf:action>
            </xf:input>
        </div>
        <div>
            <xf:trigger>
                <xf:label>Кнопка</xf:label>
                <xf:action ev:event="DOMActivate">
                    <xf:message>Кнопка была нажата</xf:message>
                </xf:action>
            </xf:trigger>
        </div>
    </body>
</html>

Для большей интерактивности при работе с формой в XForms предусмотрена обработка различных событий. Наименование события прописывается в атрибуте ev:event у тега xf:action. Самых часто используемых событий три:

  • xforms-ready
  • xforms-value-changed
  • DOMActivate

Событие ev:event = xforms-ready запускается при открытии формы. Описывается в xf:model. Событие ev:event = xforms-value-changed запускается при изменении значений в форме и смещении фокуса вне соответствующего контрола. Прописывается в контроле, в котором происходит это изменение. Событие ev:event = DOMActivate запускается при клике на соответствующий элемент формы. Чаще всего используется в элементе xf:trigger (элемент типа "Кнопка").

Основные действия, которые могут происходить при описанных выше событиях, следующие:

  • message
  • setvalue
  • другой action

Все действия прописываются в тэге <xf:action/>.

Действие xf:message выводит на экран сообщение, прописываемое в данном тэге.

Действие xf:setvalue присваивает узлу, который прописан в атрибуте ref, значение из атрибута value. При этом в необязательном атрибуте if прописываются условия, при которых данное действие будет обработано.

В действии может быть прописано другое действие. Так же в действии можно прописать атрибут if, в котором также прописываются условия, при которых данное действие будет обработано.