我在使用ZK绑定和拖放功能时遇到了问题。我有两个列表框:
<listbox id="left" width="100%" model="@load(vm.contacts)" height="200px" draggable="true" droppable="true" onDrop="@command('move')">
<listhead>
<listheader label="Contatto" align="center" />
</listhead>
<template name="model" var="contact">
<listitem value="@bind(contact)" draggable="true" droppable="true" onDrop="@command('move')">
<listcell src="/img/contact-icon_x32.jpg" label="@load(contact.person.surname.concat(' ').concat(contact.person.name))" />
</listitem>
</template>
</listbox>
...
<listbox width="100%" id="right" model="@load(vm.contactsQuickKey)" height="250px" draggable="true" droppable="true" onDrop="@command('move')" >
<listhead>
<listheader label="Etichetta" align="center" />
<listheader label="Contatto" align="center" />
</listhead>
<template name="model" var="contactQuickKey">
<listitem value="@bind(contactQuickKey)" draggable="true" droppable="true" onDrop="@command('move')">
<listcell>
<textbox width="90%" value="@load(contactQuickKey.label) @save(contactQuickKey.label, before={'move', 'saveData', 'setLeftActivePage'})"/>
</listcell>
<listcell src="/img/contact-icon_x32.jpg" label="@load(contactQuickKey.contact.person.surname.concat(' ').concat(contactQuickKey.contact.person.name))" />
</listitem>
</template>
</listbox>
如果我编辑右边列表框中的文本框,然后立即,不单击任何地方,从左边的单元格中拖放一个单元格,我添加的文本就会消失。我保存文本的唯一方法是使用onchange事件,但是它非常重。
编辑:我在这里创建了一个工作演示http://zkfiddle.org/sample/2t6r27o/24-drag-and-drop-test
谁能给我一个更好的解决方案?非常感谢!
<解决方案/strong>
我在文本框中添加了"instant="true",这就解决了我的问题!
感谢所有帮助我的人!
解决方案是将instant="true"
放到文本框。这就解决了拖放时丢失文本修改的问题。
您的问题是,您的文本列表没有加载到服务器端Textbox
。
你保存前下降before={'move'...
,但你不能加载到Textbox
,因为这需要notifyChange
,它在
之前填充@command('move')
被执行,这是不可能的,因为zk
执行周期和move
导致save
你可以做的是,从
中的数据手动更改Textbox
使用move
命令创建虚拟机类。但要找出
可能是个问题被拖拽的Textbox
属于contactQuickKey
的哪个实例
顺便说一下,onChanging的问题在哪里?交通不应该是一个
编辑
由于某些原因,数据没有保存在move
命令之前,如果
在拖动之前没有其他用户操作。
也许是一个bug?