问题标签 [knockout-sortable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 KnockoutSortable 取消删除
我正在尝试让 cancelDrop 选项与 Knockout 可排序绑定一起使用。现在,只是为了调试,我正在尝试取消所有动作。
这是我的标记
这是我的 beforeMove 功能
当我取消注释调试器语句时,我可以看到函数命中,我可以看到 cancelDrop 属性被设置,我什至看到
按理执行。但动作仍然存在。
特别奇怪的是 beforeMove 函数似乎在被移动的项目被放置在新位置之后被调用。我应该期望在此之前看到这个被调用吗?
jquery - 如何使用可排序的 jQuery UI 消除闪烁?
我有一个可排序的扑克牌列表。为了只显示卡片的顶部,我为每张卡片设置了一个负的底部边距。一旦我这样做了,jQuery sortable 就会变得非常不稳定并且难以使用。我怎样才能消除这个过滤器? 在闪烁之上,如何获得正确的垂直对齐以进行拖动?似乎我必须在列表的上方或下方移动,才能将占位符移动到列表的两侧。
我已将我的代码放在http://jsfiddle.net/otac0n/wDTwX/以便您可以感受一下,但这里是它的要点:
jquery-ui - UI 没有用 KnockoutJS 和 JqueryUI Sortable 完全更新
首先对不起我的英语不好!
无论如何,我正在尝试基于 Knockout JS 和 Jquery UI 制作一个简单的任务管理器。经过一番研究,我发现了一个小插件,可以帮助将 KO 与 JqueryUi 的 sortable 连接起来,你可以在这里阅读:http ://www.knockmeout.net/2012/02/revisiting-dragging-dropping-and.html
该插件可以很好地更新可观察数组的顺序,但我还需要根据元素在数组中的位置刷新元素的一些值。我尝试在每次排序后更新整个数组,但我注意到一个奇怪的行为:虽然 UI 保持不变,但如果我将数组发送到 JSON,它会使用正确的值进行更新!
你可以在这里找到我的代码片段:http: //jsfiddle.net/ingro/mz3MK/
尝试移动 Sortable 列表中的一些元素,然后查看 UI 与使用“打印”按钮显示的值之间的差异。
编辑:尝试将第一个元素(test#1)拉到可排序列表的底部。元素的属性“时间”保持不变(07:00)。现在将它带到可排序列表的第二个位置,您会注意到属性“时间”变成了“10:00”!实际上,UI 仅在您拖动某些东西时才会刷新,并且只有被拖动的元素才会刷新到拖动之前的状态。但是如果你打印数组的值,你可以看到它总是被刷新:\
感谢任何可以帮助我的人!
jquery - 从 jQuery UI 触发 click 事件到 knockout.js
使用来自 Jquery-ui sortable 的代码示例在基于 Android 或 IOS 的触摸设备上无法在 iOS 设备上触摸启用 jQuery UI sortables,注册 knockout.js 点击处理程序以及 jQuery UI sortable 时出现问题在相同的元素上。knockout.js 处理程序不会在启用触摸的设备上触发,但会在台式机/笔记本电脑上触发。
添加一个名为moved的标志可以跟踪何时需要触发点击处理程序,标记// TRIGGER HERE
如下:
问题是,如何从 jQuery UI 触发对 knockout.js的点击事件?
我试过this.element.click()
, this.element.get().click()
,this.element.trigger("click")
等无济于事。
更新:
将代码破解为:
- 跟踪实际目标,因为 html.element 似乎不是正确的
- 在正确的目标上触发点击事件
现在它可以与 knockout.js 的点击事件一起正常工作。
knockout.js - 敲除“if”绑定不适用于可排序列表中的表达式?
我刚刚在使用 Knockout 和 Knockout-sortable 插件制作的类似待办事项的可排序列表中遇到了另一个问题。
我需要在当前时间放置的元素下放置一个红色定界符,如果在该定界符之前删除了一个元素,则取消排序。
我尝试使用“可见”绑定,它以某种方式工作,但可见绑定只是隐藏了 DOM 元素,它弄乱了可排序的 arrayIndex,向其中添加了不必要的元素。
“if”绑定会更好,因为它仅在必要时插入 DOM 元素,但我与 visible 一起使用的表达式总是被评估为 true,我不知道为什么......
这是小提琴:http: //jsfiddle.net/ingro/VaqqF/
任何帮助表示赞赏,谢谢!
knockout.js - 防止项目在其他(父/子)元素中“可放置”
我使用 knockout-sortable.js 让用户拖放项目以赋予它们不同的顺序,但是当我的页面上有多个“拖放区”时我遇到了问题。我有嵌套集,所有这些都是可排序的,但不可互换。
我的代码:
在其他时候:
我现在可以将“Another blabla”拖放到“Blabla”中,从而导致错误。我怎样才能防止这种情况发生?
knockout.js - 使用可拖动作为源列表将添加到可排序的项目链接在一起?
原谅一起被黑的样本
http://jsfiddle.net/marcmeans/SqrBf/1/
如果您将可用学生中的一个项目添加到 Table3 两次,然后尝试将一个从 Table3 移动到 Table2,两者都会消失。
我还注意到,当我为添加到 Table3 的项目生成新的 guid 时,arg.item 似乎是对源列表中项目的引用,而不是克隆。这会在淘汰赛中创建一个链接,如果我更新一个链接,我会全部更新。
我假设我在这里做错了什么,但我很难弄清楚是什么。
javascript - Knockout-Sortable 水平列表在拖动项目时垂直推送项目
我正在使用 knockout.js 创建一个应用程序,使用 knockout-sortable 进行拖放可排序列表。有一个垂直列表,每个项目内部都有一个水平列表。垂直列表表现得很好,但是每当我尝试在水平列表中拖动一个项目时,它会相对于被拖动的项目向上或向下推动该列表中的其余项目。水平列表定义如下:
您可以在此处查看完整的应用程序:
链接不再存在
我已经尝试了我找到的所有建议,包括http://bugs.jqueryui.com/ticket/6702上的建议,但到目前为止,没有任何效果。我真的很想让水平可排序列表工作,所以如果有人有任何建议,我将不胜感激。
javascript - 如何防止淘汰嵌套可排序允许放入子列表?
我有一个淘汰排序列表,里面有淘汰排序列表。本质上它是基本的“可用学生”示例(http://jsfiddle.net/rniemeyer/UdXr4/),只是我希望表格也可以排序。
我大部分时间都在工作,但是我无法将表格拖到其他表格中。
我能够在表格列表上添加一个 allowDrop 函数,以防止学生被丢弃到表格列表中,
所以我希望在学生名单上有类似的东西,不允许桌子进入,但对于我的生活,我无法弄清楚。我试过查看 id,甚至查看性别属性是否可用(因为它应该只适用于学生)无济于事......
我编辑了一个 jsfiddle 以使其更类似于我的情况;你会看到如果你拖动一个表,你可以把它放到另一个表中。 http://jsfiddle.net/nYSLq/1/
任何帮助或建议将不胜感激。
javascript - 使用 Knockout.js、冲突的 jQuery.tmpl 和 Knockout-Sortable 控制 Flash 插件
我正在尝试使用 Knockout.js 的本机模板功能来渲染 HTML 以嵌入 Flash 对象。jQuery.tmpl 完美地完成了这项工作,但是由于与 Knockout-sortable 插件的冲突,我无法使用它。
下面是一个使用原生模板的 Flash 插件示例:http://jsfiddle.net/7y3ub/35/
在 Chrome 中,播放器永远不会出现。在 Firefox 中,如果您在选中复选框时更改频道,播放器将显示。然而,重新选中该框会使玩家再次消失。
'if' 绑定是必要的,因为在页面期间可能有许多 Flash 插件加载和卸载实例。
据我所知,当对象/嵌入标签进入可见 DOM 时,HTML 需要全部到位。这就是为什么 jQuery.tmpl 在我的情况下会很棒。我自己尝试过形成 HTML 字符串,但我不知道如何应用和维护新标记包含的绑定。
归根结底,我要么需要一种在仍然支持绑定的同时立即呈现 HTML 的方法,要么找到一种使 jQuery.tmpl 和 Knockout-sortable 相互兼容的方法。
下面是一个不兼容的例子:http: //jsfiddle.net/7y3ub/41/
如果你简单地取消引用 jQuery.tmpl,这个例子中的代码将完美地工作。http://jsfiddle.net/7y3ub/42/
控制台中的错误消息似乎暗示上下文没有被正确调整,或者暗示的 foreach 没有执行。在此调整中,消息变得更加不寻常,其中SubItem
对象被简单的字符串替换:http: //jsfiddle.net/7y3ub/43/