这是一个虚拟的例子:
<xf:bind id="test-bind" name="test" ref="test" relevant="true()">
<xf:constraint level="warning" value="false()"/>
</xf:bind>
<xf:bind id="field1-bind" name="field1" ref="field1"
calculate="xxf:evaluate-bind-property('test-bind','relevant')"/>
<xf:bind id="field2-bind" name="field2" ref="field2"
calculate="xxf:evaluate-bind-property('test-bind','constraint')"/>
我希望field1的值为&#39; true&#39; (这是)和field2的值是&#39; false&#39; (不是!)。实际上两者都被评估为“真实”。如果我定义没有级别的xf:约束,我得到了正确的&#39;行为。它看起来像一个带有等级=&#39;警告&#39;不是真正的&#39;约束......这是正常的吗?
如果是,那么如何获得&#34;警告验证的结果&#34; (又名:例如用条件定义条件动作取决于被激活的警告与否)? 不能使用valid()函数,因为警告级别不在valid()函数的范围内......
答案 0 :(得分:0)
从4.7开始,xxf:evaluate-bind-property()
确实只允许您访问错误级别约束,甚至还有"TODO" in the code about this;)。
我不知道这是否适合您,但另一种处理此问题的方法是依赖事件,正如错误摘要所做的那样。具体来说,您可以侦听来自视图中控件的xxforms-constraints-changed
事件,然后使用event('level')
获取约束级别。您可以在error summary code中看到这是如何完成的。