在 XForms 的单独弹出窗口中插入和更新数据
Posted
技术标签:
【中文标题】在 XForms 的单独弹出窗口中插入和更新数据【英文标题】:Inserting and updating data in a separate popup in XForms 【发布时间】:2015-02-25 21:39:10 【问题描述】:我正在尝试创建一个弹出窗口以允许用户编辑实体的详细信息。有一个人列表(重复控件),当您单击他们的任何名字时,弹出窗口应该让您编辑该人的另一个数据。像这样的图:
我设法做到这一点的唯一方法是在表单中创建一个隐藏的 div,并使用 JQuery-UI 显示它。所以,这个 div 绑定到一个“临时人”,一旦编辑,我将这些临时值复制到最终列表中。像这样的:
<people>
<person name="Alice" age="32" phone="+33..."/>
<person name="Mike" age="27" phone="+54..."/>
<person name="Aureline" age="60" phone="+33..."/>
</people>
<tmpPerson name="" age="" phone=""/>
但问题是,添加新寄存器很容易,因为我只需要在控件中加载空白值(tmpPerson 为空白),一旦完成,我只需要使用原点进行插入...但是在在注册表已经存在的情况下,加载值并不容易......我尝试使用 IF 但它不起作用(the alert 都没有)并且没有“else”语句。那么,如何确定是否必须加载注册表?
<xf:trigger id="loadExistingValues">
<xf:label>Load values</xf:label>
<xf:action ev:event="DOMActivate"
if="not(instance('people')/person[@id='Mio')">
<xf:alert>Here should be the code for a new person creation</xf:alert>
</xf:action>
</xf:trigger>
我的意思是,我知道我可以通过 javascript 读取数据模型,搜索名为“Mio”的人,如果确实存在,也通过 JS 加载值,但如果我必须插入一个新的“人”我不能只用 JS 来做,所以我唯一能想到的就是用 XForms 操作创建一个触发器,然后从 JS 中触发它。但是所有这些东西听起来都很复杂。也许任何人都可以帮助我提出想法或一个简单的例子?我找不到这样的演示!
【问题讨论】:
【参考方案1】:您应该尝试一下对话框,它是 XForms 2.0 中的一个新功能,在 XSLTForms 中已经部分支持。
【讨论】:
感谢 Alain,我也尝试过使用原生 XSLTForms 对话框,但我选择了 JQuery,因为它更容易“以图形方式操作”。问题实际上是修改集合中现有项目的逻辑,因为我必须选择它,然后将值复制到临时模型实例,然后更新集合中的值。我一直在寻找一种简单的方法来做到这一点以上是关于在 XForms 的单独弹出窗口中插入和更新数据的主要内容,如果未能解决你的问题,请参考以下文章