Как часто будут рассчитываться работы в Orbeon Xforms - PullRequest
0 голосов
/ 29 сентября 2011

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

<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)" />

1 Ответ

1 голос
/ 30 сентября 2011
  • Когда пользователи нажимают кнопку (при условии, что это кнопка), которая запускает два xforms:setvalue, сначала запускаются xforms:setvalue, а xforms:bind calculate - позже.
  • Практически все взаимодействия пользователей с формой приведут к переоценке xforms:bind calculate.
...