使用Mapping和Sortable插件进行淘汰

时间:2012-11-29 14:42:22

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

我正在尝试使用Ryan Niemeyer的可排序插件获取淘汰映射插件,但我没有成功。在我的示例中,如果您尝试将项目排序到列表的中间,则它始终将其置于底部。排序到列表顶部有效,但如果您尝试将项目排序到除顶部之外的任何其他位置,它将自动转到列表的底部。

实施例: http://jsfiddle.net/thebassix/cKX53/1/

这是我的html:

<div id="results">
            <h3>Tasks</h3>
            <ul data-bind="sortable: series">
                <li data-bind="text: Name"></li>
            </ul>
        </div>​

1 个答案:

答案 0 :(得分:1)

问题看起来与映射插件有关,将_destroy属性转换为可观察对象。 Knockout核心和处理_destroy的可排序插件中的功能期望它是一个普通的属性。

映射插件确实有copy选项,您可以使用该选项简单地复制属性而不是创建可观察对象。但是,这似乎只适用于顶级属性,因此如果您直接传入数组,那么您可能需要设置映射选项,如:

var mappingOptions = {
    create: function(options) {
        return ko.mapping.fromJS(options.data, { copy: '_destroy' });
    }            
};

示例:http://jsfiddle.net/rniemeyer/9UGKQ/