我有一个单选按钮控件,里面有两个项目。
<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上的单选按钮'Delete‘而不是单选按钮'Add’。我该如何执行此操作?
我尝试将class属性与xforms:item一起使用,但这不起作用。有没有其他方法可以做到这一点?
发布于 2011-11-15 00:03:46
问得好。不幸的是,这并不像它应该做的那么容易:
如果您只想隐藏删除单选按钮,而不是禁用该单选按钮,您可以将“删除”的<xforms:item>
替换为一个<xforms:itemset ref="…">
,当您不想显示该单选按钮时,您可以将该not绑定到一个不相关的节点。但是,您不能使用相同的技术通过将项目集绑定到您设置为只读的节点来禁用单选按钮。(是的,如果你能做到这一点,那就太好了。)
按照现在的情况,我认为你需要:
<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。
https://stackoverflow.com/questions/8117157
复制相似问题