【问题标题】:Knockout.js nested sortable bindingsKnockout.js 嵌套的可排序绑定
【发布时间】:2013-06-25 06:09:45
【问题描述】:

我正在使用 knockout.js 可排序插件;但是,我遇到了一个迄今为止我无法解决的问题。我有两个可排序的绑定,一个用于存储桶,另一个用于存储桶项目。我能够在存储桶之间重新排序存储桶项目;但是,我无法重新排序存储桶。你知道为什么会这样吗?我也在使用嵌套绑定,但据我所知,这不是导致问题的原因。

非常感谢您提供的任何见解。

【问题讨论】:

  • 请发布您的代码和您正在使用的插件
  • 由于某些原因,我无法发布我的代码;但是,我能够缩小问题的范围。我有一个 bucketIds 数组,当我对其应用 sortable 时,它​​没有正确绑定。不幸的是,我仍然不知道为什么它不会绑定。 (我正在使用 ryan neimeyer 创建的 knockout.js-sortable 插件)

标签: knockout.js knockout-sortable


【解决方案1】:

我不知道您的确切结构,但您可以使用connectClass 选项来控制连接哪些可排序列表。例如,如果您这样做:

<ul data-bind="sortable: { data: buckets, connectClass: 'buckets' }">
    <li>
        <span data-bind="text: name"></span>
        <ul data-bind="sortable: { data: items, connectClass: 'items' }">
            <li data-bind="text: name"></li>
        </ul>
    </li>
</ul>

您只能在存储桶中放置一个存储桶,在项目中放置一个项目。该插件会自动将类添加到父元素。

这是一个示例:http://jsfiddle.net/rniemeyer/YaLgL/

如果您不希望能够在存储桶之间对项目进行排序,那么您可以将唯一的connectClass 应用于每个喜欢:

http://jsfiddle.net/rniemeyer/czNe8/

【讨论】:

  • 当您不希望某个项目可排序但其他项目可排序时,如何使其工作?尽管该项目不可重新排序,但我尝试使用它,当我尝试时整个父 UL 移动了,这反过来又使 UL 的父 LI 重新排序(这很奇怪)。
  • @Phil- 你能把你想要做的事情放在带有一些注释的 jsFiddle 中吗?可能有办法让它发挥作用,但我不肯定我在你的情况之上。谢谢!
  • 我添加了一个小提琴:jsfiddle.net/zoldello/8hvXN/2 发生的情况是,当我尝试移动 NOT MOVABLE 项目时,整个项目都被选中了。尝试在 NOT MOVABLE 上按住鼠标并注意整个容器移动。有没有办法阻止这个问题?
  • 你可以这样做:jsfiddle.net/rniemeyer/zRrAC 你在元素上处理 mousedown 并防止它冒泡。
  • @niemeyer,我在浏览器控制台上收到此异常您的 jQuery.tmpl 版本太旧。请升级到 jQuery.tmpl 1.0.0pre 或更高版本。你能帮我吗 ??我正在使用 Knockout-3.1.0.js 和 knockout-sortable.js(由 tou 准备)
猜你喜欢
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 2013-02-18
  • 2016-05-15
  • 2013-08-18
相关资源
最近更新 更多