Как часто будет производиться расчет работ в Orbeon Xforms

У меня есть определение привязки следующим образом:

<xforms:bind nodeset="instance('demo')/pointer"
                        type="xforms:integer"
                        calculate="
                        if($current-page &lt; '2') then '0'
                            else (
                            if($current-page &gt; '2') 
                            then ($max-pages - 1)
                            else .
                            )"/>

При каждом клике пользователя по форме значение current-page меняется. Я хотел понять, как часто выполняется вычисление в приведенном выше определении привязки?

Проблема в том, что переменная pointer и current-page зависят друг от друга, поэтому, если я сначала нажму на что-то, значение pointer должно быть оценено немедленно, а в следующей инструкции я должен установить значение current-page на основе значения указателя, которое измененный. При клике код будет таким:

<xforms:setvalue ref="$pointer"
                 value="($pointer + 1)"/>
<!-- i am assuming if the current-page is 2,
     it will increment, else the value is set as per calculate -->
<xforms:setvalue ref="$current-page"
                 value="($current-page + 1)"
                 xxforms:if="($pointer = $max-pages)" />

person Jayy    schedule 29.09.2011    source источник


Ответы (1)


  • Когда пользователи нажимают кнопку (при условии, что это кнопка), которая запускает два xforms:setvalue, эти xforms:setvalue запускаются первыми, а xforms:bind calculate запускаются позже.
  • Практически любое взаимодействие пользователей с формой приведет к повторной оценке xforms:bind calculate.
person avernet    schedule 29.09.2011