我有一个带有两个项目的单选按钮控件。
<xforms:select1 ref="add-delete" appearance="full">
<xforms:item>
<xforms:label>Add</xforms:label>
<xforms:value>A</xforms:value>
</xforms:item>
<xforms:item>
<xforms:label>Delete</xforms:label>
<xforms:value>D</xforms:value>
</xforms:item>
</xforms:select1>
我想只禁用单选按钮'删除'而不禁用条件X上的单选按钮'添加'。我该如何执行此操作?
我尝试使用带有xforms:item的class属性,但这不起作用。还有其他办法吗?
答案 0 :(得分:2)
好问题。不幸的是,这并不像应该那样容易:
如果您只想隐藏删除单选按钮而不是已禁用,则可以将<xforms:item>
替换为绑定到您创建的节点的<xforms:itemset ref="…">
的“删除” - 当你想要那个单选按钮不显示时。但是,您无法使用相同的技术通过将项目集绑定到您设为只读的节点来禁用单选按钮。 (是的,如果你能这样做会很好。)
按照目前的情况,我认为你需要:
<xforms:select1>
。一个用于“添加”,一个用于“删除”,因此您可以在某些条件下将第二个用于只读。<xforms:select1>
,则不会是这些值,因此当选择“添加”作为对xforms-select
的反应时,您需要取消选择“删除”,并且反之亦然。在模型中,您将拥有:
<xforms:instance>
<instance>
<add/>
<delete/>
<add-delete/>
<delete-enabled>true</delete-enabled>
</instance>
</xforms:instance>
<xforms:bind ref="add-delete" calculate="string-join((../add, ../delete), ' ')"/>
<xforms:bind ref="delete" readonly="../delete-enabled = 'false'"/>
在视图中:
<xforms:select1 ref="instance()/add" appearance="full">
<xforms:item>
<xforms:label>Add</xforms:label>
<xforms:value>A</xforms:value>
</xforms:item>
<xforms:setvalue ev:event="xforms-select" ref="instance()/delete"/>
</xforms:select1>
<xforms:select1 ref="instance()/delete" appearance="full">
<xforms:item>
<xforms:label>Delete</xforms:label>
<xforms:value>D</xforms:value>
</xforms:item>
<xforms:setvalue ev:event="xforms-select" ref="instance()/add"/>
</xforms:select1>
请参阅this Gist了解此示例的完整来源。