【发布时间】:2016-02-20 20:52:53
【问题描述】:
我有一个小的 Knockout JS,它从一个可淘汰的 observableArray 中填充一个列表。现在我已经使列表可以按 html 属性排序,没有来自 js 的特殊功能或任何自定义剔除模板。现在列表可以作为拖放排序,这正是我需要的,但它并没有反映在淘汰赛中。可能是因为它只是 html 的 UI 表示形式发生了变化,但 ObservableArray 本身的元素并没有改变。现在我如何以最小的变化实现这一目标。
JS 小提琴:http://jsfiddle.net/qm3somre/1/
html:
<ul id="sortable" sortable="true" style="list-style:none" data-bind="foreach: columns">
<li>
<span data-bind="text: $data"></span>
</li>
</ul>
<textarea data-bind="text:columns"></textarea>
脚本:
var ViewModel = function() {
var self = this;
self.columns = ko.observableArray(["Jenny","Jennifer","Bob","Cat","Billy"]);
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
};
ko.applyBindings(new ViewModel());
【问题讨论】:
-
欢迎。你能解释一下“不反映在淘汰赛中”是什么意思吗?
-
如果你看到我发布的 js fiddle,在 UI 中对列表进行排序不会改变列表中元素的实际顺序。我也在文本区域中显示列表。更改列表的顺序不会更改文本区域中事物的顺序,这意味着剔除可观察层次结构不会改变。
标签: javascript sorting knockout.js