【问题标题】:Knockout Sortable list not working offset by new items added淘汰赛可排序列表无法通过添加的新项目抵消
【发布时间】:2012-12-25 03:15:56
【问题描述】:

当我将项目添加到我的列表时(通过单击“添加系列”按钮),它会导致我的列表无法正确排序。例如。如果我单击“添加系列”按钮,然后尝试在项目“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" />

【问题讨论】:

    标签: jquery-ui knockout.js jquery-ui-sortable knockout-sortable


    【解决方案1】:

    问题是您添加的Series 对象具有_destroy 作为可观察对象。一般来说,_destroy只是一个普通属性,因为KO set的destroy函数把它当作普通属性。

    因此,如果您不在 Series 构造函数中将 _destroy 设为 observable,您的问题将得到解决,例如:

    self._destroy = data._destroy;
    

    更新示例:http://jsfiddle.net/rniemeyer/63rup/

    另外,我刚刚在sortable 插件中添加了一个fix,它无论如何都会解开_destroy,所以这不是问题。

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多