如果我有多个<ul>
,每个都有自己的可拖动子<li>
,我拖放列表之间的项目(也就是连接列表),KO怎么样跟踪这些变化?显然ViewModel没有跟踪变化,所以我想问题是如何跟踪它们?
HTML:
<section>
<ul class="connected" data-bind="foreach: fieldsCol1" id="list1">
<li data-bind="attr: {id: id}">New Field</li>
</ul>
<ul class="connected" data-bind="foreach: fieldsCol2" id="list2">
<li data-bind="attr: {id: id}">New Field</li>
</ul>
</section>
查看型号:
function VM() {
this.fieldsCol1 = ko.observableArray([some array]);
this.fieldsCol2 = ko.observableArray([some array]);
}
ko.applyBindings(new VM());
在上面的示例中,在list1
和list2
之间移动项目并不反映在fieldsCol1
或fieldsCol2
上。
顺便说一下,我正在使用一个允许上述DND行为的jQuery库。
答案 0 :(得分:2)
这不是一个容易解决的问题:这些类库通常涉及从DOM中分离元素,并将它们插入到其他地方。可能他们在过程中克隆元素。这些类库并不知道Knockout创建的绑定,并且往往会搞砸它们。修补这不是一件容易的事。如需灵感,请查看Knockout可排序插件:http://github.com/rniemeyer/knockout-sortable