我遇到了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
有人能给我一个更好的解决方案吗?
非常感谢!
解
我在文本框中添加了“instant =”true“”,这解决了我的问题!
感谢大家对我的帮助!
答案 0 :(得分:2)
解决方案是将instant="true"
放入文本框。这解决了拖放文本修改失败的问题。
答案 1 :(得分:1)
您的问题是,您的文字未加载到服务器端Textbox
您可以在放before={'move'...
之前保存,但无法将其加载到
Textbox
,这需要一个notifyChange
,这是在之前完成的
@command('move')
被执行,这是不可能的,zk的cos
执行周期和move
导致保存的事实
您可以做的是,从您的数据中手动切换Textbox
move
命令的vm类。但是弄清楚这可能是一个问题
被拖动的contactQuickKey
所属的Textbox
实例。
顺便问一下,onChanging的问题在哪里?流量不应该是一个。
由于某种原因,数据未在move
命令之前保存,如果是
在拖动之前不会发生另一个用户操作
也许是一个错误?