Javascript 在Knockout-array中反映HTML列表排序顺序

Javascript 在Knockout-array中反映HTML列表排序顺序,javascript,sorting,knockout.js,Javascript,Sorting,Knockout.js,我有一个小的击倒JS,它填充一个击倒列表。现在,我已经使列表按html属性排序,js中没有任何特殊功能或任何自定义敲除模板。现在,列表可以按拖放方式排序,这正是我所需要的,但它并不反映在淘汰中。可能是因为它只是改变了html的UI表示,但ObservalArray的元素本身并没有改变。现在,我如何以最小的变化实现这一点 JS小提琴: html: 应用绑定(新的ViewModel()) viewmodel代码中的jQuery告诉您需要一个自定义绑定处理程序 您必须为此使用自定义绑定。一个已经可以使

我有一个小的击倒JS,它填充一个击倒列表。现在,我已经使列表按html属性排序,js中没有任何特殊功能或任何自定义敲除模板。现在,列表可以按拖放方式排序,这正是我所需要的,但它并不反映在淘汰中。可能是因为它只是改变了html的UI表示,但ObservalArray的元素本身并没有改变。现在,我如何以最小的变化实现这一点

JS小提琴:

html:


应用绑定(新的ViewModel())

viewmodel代码中的jQuery告诉您需要一个自定义绑定处理程序

您必须为此使用自定义绑定。一个已经可以使用了

大概是

<ul data-bind="sortable: columns">
  <li data-bind="text: $data"></li>
</ul>

Jsfiddle:

欢迎光临。你能解释一下“在淘汰中不反映”是什么意思吗?如果你看到我发布的js小提琴,在UI中对列表进行排序不会改变列表中元素的实际顺序。我也在文本区域中显示列表。更改列表的顺序不会更改文本区域中事物的顺序,这意味着淘汰可观察层次结构不会更改。谢谢Dandy,我已经看到了这一点,但这是一个由其他人编写的自定义绑定,我不能在没有许可证的情况下使用它,这需要有人在办公室审查和批准,这不是胡说八道。没有办法捕获UI的状态。现在我想,我能不能得到HTML元素,列表,然后读回并按那个顺序使用它,因为我只需要在用户按下OK按钮时使用那个顺序,我根本不需要它是动态的。它就像一个符咒一样工作。我没有使用knockout-observearray,而是得到了html元素,并迭代了它的子列表,得到了排序顺序:)
var ViewModel = function() {
    var self = this;
    self.columns = ko.observableArray(["Jenny","Jennifer","Bob","Cat","Billy"]);
    $( "#sortable" ).sortable();
    $( "#sortable" ).disableSelection();
};
<ul data-bind="sortable: columns">
  <li data-bind="text: $data"></li>
</ul>