Knockoutjs与jQuery UI Sortable

Cie*_*iel 18 jquery jquery-ui knockout.js

我正在使用Knockout论坛上的Google网上论坛寻求帮助 - 但我认为更多的观众永远不会伤害这种情况.

我试图让KO使用jQuery UI的'Sortable'插件来处理这种情况.我的代码发布在这里.

http://www.pastie.org/1285716

试图使用自定义绑定...

        ko.bindingHandlers.onReceiveItem = {
            init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
                $(element).bind("sortreceive", function (event, ui) {
                    ko.bindingHandlers.onReceiveItem.update(element, valueAccessor, allBindingsAccessor, viewModel);
                });
            },
            update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
                var value = ko.utils.unwrapObservable(valueAccessor());
                var bindings = allBindingsAccessor();
            }
        };
Run Code Online (Sandbox Code Playgroud)

目标是当可排序列表收到一个项目时,它可以获取该项目并将其添加到另一个observableArray.

不过,这对我来说并不适合.我很难像我想要的那样让事件发生.我设置它的方式,它确实触发,但它只返回一个'true/false'值.我希望其他人可能知道我做错了什么,知道如何解决它.

(要使用代码,您需要参考

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/base/jquery-ui.css" rel="Stylesheet" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.js"></script>
Run Code Online (Sandbox Code Playgroud)

在顶部,然后是最新版本的Knockout(1.1.1)

http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-1.1.1.debug.js

Gui*_*e86 16

我重新编写了示例并附带了一个几乎完整的bindingHandler,它不需要id属性,它也处理重新排序.这是代码:

http://jsbin.com/knockoutsortable/20/edit

用法:

  • 它使用template.foreach绑定来查找viewModel中关联数组的内容.

  • 您可以使用databind ="foreach:Products,sortable:true"来启用在没有选项的单个数组中进行排序.

  • 它正在使用observableArray对象.

  • 它构建jQuery可自行排序,你可以在绑定中传递相同的选项对象,而不是在jQuery.sortable构造函数中.


mad*_*kay 11

在我结束之前,我没有意识到史蒂夫已经回答了这个问题.在这里,你会比他略有不同.

Sortable使得这更加困难,通过拖放绑定绑定到每个产品会更容易.sortable的问题是你绑定整个列表而不是项目.

http://www.pastie.org/1432093