我创建了一个拖放界面,最终将成为表单生成器。我已经创建了一个表单生成器的演示 http://jsfiddle.net/szASZ/1/。当你将顶部项目之一拖到其下方的灰色区域时,一切似乎都正常工作。
然而,问题出现在当你刷新页面或演示,并尝试对落区内的项目进行排序时。如果你抓住第一个落区顶部的“单选框输入”并将其移动到该落区内或外,一切都能正常工作。
现在,请尝试将最后一个项目“复选框输入”拖动到其落区内,一切也应该正常工作。最后,刷新页面/演示并将同样的最后一个“复选框输入”移动到另一个落区。占位符会显示,然后永远不会消失。我发现,在此次拖放过程中,“onDragEnd”事件从未被调用,但其他所有时候都被调用。通常,该事件被转发到表单生成器的顶层,它会将被拖动的项目设置在新的数据数组中。
更有趣的是,如果我在包含已落下项目的数组中添加一个空对象 (http://jsfiddle.net/szASZ/ - 第30行、34行),一切都按预期工作,因此似乎“落区”项目数组中的最后一个项目不能正确触发“onDragEnd”事件。
基本上,我遇到的主要问题是为什么除了最后一个条目以外,所有其他条目都可以被排序、删除并且事件触发正常?谢谢!
然而,问题出现在当你刷新页面或演示,并尝试对落区内的项目进行排序时。如果你抓住第一个落区顶部的“单选框输入”并将其移动到该落区内或外,一切都能正常工作。
现在,请尝试将最后一个项目“复选框输入”拖动到其落区内,一切也应该正常工作。最后,刷新页面/演示并将同样的最后一个“复选框输入”移动到另一个落区。占位符会显示,然后永远不会消失。我发现,在此次拖放过程中,“onDragEnd”事件从未被调用,但其他所有时候都被调用。通常,该事件被转发到表单生成器的顶层,它会将被拖动的项目设置在新的数据数组中。
更有趣的是,如果我在包含已落下项目的数组中添加一个空对象 (http://jsfiddle.net/szASZ/ - 第30行、34行),一切都按预期工作,因此似乎“落区”项目数组中的最后一个项目不能正确触发“onDragEnd”事件。
componentWillMount: function () {
var newInput = [
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Text Input" },
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Checkbox Input" },
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Radio Input" }
];
var newZones = [
[
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Radio Input" },
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Text Input" },
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Checkbox Input" }
,{}
],
[
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Text Input" },
{ "classes": "soft-half push-half--bottom brand-bg--gray-dark brand-color--white", "title": "Checkbox Input" }
,{}
]
];
this.setState({ inputs: newInput });
this.setState({ zones: newZones });
}
基本上,我遇到的主要问题是为什么除了最后一个条目以外,所有其他条目都可以被排序、删除并且事件触发正常?谢谢!