首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在由Knockout JS支持的Accordion中使用JQuery UI排序的困难

在由Knockout JS支持的Accordion中使用JQuery UI排序的困难
EN

Stack Overflow用户
提问于 2013-01-01 23:55:53
回答 1查看 711关注 0票数 1

请参见我正在尝试构建的UI的jsFiddle链接here。首先,用户选择一个会议。所选会议的事件显示在Accordion中,每个事件都有表格,这些表格在Accordion中显示为纯html表格。用户应该能够拖放表格并自定义它们的排序顺序。所有这一切都得到了Knockout JS的支持,到目前为止,它工作得很好,但我遇到了一个障碍……

我遇到的第一个问题是“数据绑定”手风琴。我实现了自定义绑定处理程序解决方案here,这似乎工作得很好。但是,我似乎不能可靠地将表记录的可排序功能连接起来。

我不能简单地在$(document).ready(function(){});中调用$(".sortable tbody").sortable();。虽然这适用于第一次会议,但一旦SelectedConference更改,可排序功能就会丢失。我可以将它添加到Accordion的自定义绑定器的更新函数中:

代码语言:javascript
复制
update: function (element, valueAccessor) {

            var options = valueAccessor();
            $(element).accordion("destroy")
            $(element).accordion({ active: "h3:last", collapsible: true });

            //TODO: add sortable call here
        }

这似乎是可行的,但我对定制绑定器是个新手。这是不是效率低下?有没有更好的方法来实现可排序功能?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-02 00:36:38

不要担心custom binding handlers,他们是放置这种逻辑的正确位置。

但是,我建议您只为可排序逻辑创建一个新的自定义绑定,因为它与您的accordions无关:

代码语言:javascript
复制
ko.bindingHandlers.sortable = {
    init: function (element, valueAccessor) {
        var options = valueAccessor() || {};
        $(element).sortable(options);
    }
}

然后你可以在你的html中使用它:

代码语言:javascript
复制
<tbody data-bind="foreach: Tables, sortable: {}">

演示JSFiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14111838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档