2

我想使用敲除和 JQuery UI 实现一个表单构建器。

我发现了 Knockout 可排序插件以及更多材料,并为表单构建器实现了一个框架。

基本上我有一个可观察的数组,它包含我所有可用的字段类型及其属性,另一个包含已添加到表单中的控件。我添加了一个绑定,只需单击它就可以为我添加一个字段,这样它就可以节省快速用户的拖放时间。在添加的字段上还有一个单击事件,该事件将转到字段详细信息(现在仅显示警报)。

我想为添加到表单的每个表单元素分配一个 id。如果将另一个元素添加到表单中,它应该有一个递增的 id,如果表单中的元素重新排列,则元素的 id 也应该更改。

我的问题是我应该在哪里以及如何执行此 ID 分配然后重新分配,因此每次添加或移动新字段时,表单元素的 id 将按连续顺序排列。

我假设我可以为绑定处理程序中的每个删除的元素分配一个 id,但是之后如何控制它?:

$(element)[0].id = 'field-nr-' + globalVariable++;

这也意味着我必须更改 Knockout Sortable 插件,这是我试图避免的。

代码在这个小提琴中:http: //jsfiddle.net/razvangl/z52G7/

4

1 回答 1

1

如果我理解正确,那么您可能会使用$indexforeach.

所以,你会绑定类似的东西:

<table style="width : 100%" data-bind="attr: { id: 'field-nr-' + $index() }" >

当您拖动字段时,id 将根据其在 observableArray 中的位置保持更新。

我更新了您的小提琴(并更新了 KO 版本)以显示 a 中的值:http td: //jsfiddle.net/rniemeyer/56PLd/

于 2013-09-18T13:48:10.870 回答