5

我有一个淘汰排序列表,里面有淘汰排序列表。本质上它是基本的“可用学生”示例(http://jsfiddle.net/rniemeyer/UdXr4/),只是我希望表格也可以排序。

我大部分时间都在工作,但是我无法将表格拖到其他表格中。

我能够在表格列表上添加一个 allowDrop 函数,以防止学生被丢弃到表格列表中,

        this.isTable = function(arg) {
            return arg.sourceParent != undefined;
        };

所以我希望在学生名单上有类似的东西,不允许桌子进入,但对于我的生活,我无法弄清楚。我试过查看 id,甚至查看性别属性是否可用(因为它应该只适用于学生)无济于事......

我编辑了一个 jsfiddle 以使其更类似于我的情况;你会看到如果你拖动一个表,你可以把它放到另一个表中。 http://jsfiddle.net/nYSLq/1/

任何帮助或建议将不胜感激。

4

1 回答 1

5

对于这种类型的事情,一个不错的选择是使用connectClass选项。这将有助于对可以放入物品的容器类型进行分类。

所以,你可以这样做:

<div id="main" data-bind="sortable: { data: tables, connectClass: 'tables' }">
    <div class="table">
        <div data-bind="text: students.id"></div>
        <div class="seats" data-bind="sortable: { data: students, allowDrop: $root.isTableFull, connectClass: 'students'  }">
            <div class="student" data-bind="text: name"></div>
        </div>
    </div>
</div>

请注意,该插件确实将该类分配给您的适当元素。

现在,学生只会与学生一起排序,而表格只会一起排序。

这是一个更新的小提琴,去掉了一些不必要的额外内容:http: //jsfiddle.net/rniemeyer/7yA2s/

于 2012-12-07T22:52:33.977 回答