当我将项目添加到我的列表中时(通过单击“添加系列”按钮),会导致我的列表无法正确排序。例如。如果我单击“添加系列”按钮,然后尝试在“trrde”和“1”之间移动“seriesname232”,那么它将向下移动一个(在“1”下面)。我认为这是因为可排序列表没有考虑到添加了某些内容。以下是一个例子:
http://jsfiddle.net/thebassix/yTAXh/
<div id="results">
---Hidden---
<ul id="hidden" data-bind="sortable: { data: hiddenSeries, afterMove: hide}">
<li data-bind="visible: Hidden, text: Name"></li>
</ul>
---Unhidden---
<ul id="unhidden" data-bind="sortable: { data: unhiddenSeries, afterMove: unhide}">
<li data-bind="visible: !Hidden(), text: Name"></li>
</ul>
</div>
<hr/>
<div>All</div>
<ul data-bind="foreach: series">
<li>
<span data-bind="text: Name"></span> -
(<span data-bind="text: Hidden"></span>)
</li>
</ul>
<input id="btnAddSeries" data-bind="click: addSeries" title="Add Series" class="ews_button" type="button" value="Add Series" />
答案 0 :(得分:0)
问题是您添加的Series
对象具有_destroy
作为可观察对象。通常,_destroy
只是一个普通属性,因为KO的destroy
函数将其设置为普通属性。
因此,如果您未在_destroy
构造函数中使Series
成为可观察对象,则会解决您的问题:
self._destroy = data._destroy;
更新了示例:http://jsfiddle.net/rniemeyer/63rup/
此外,我刚刚在sortable
插件中添加fix,无论如何都要解包_destroy
,所以这不会有问题。