Javascript 使用knockout.js和json数据对列表进行排序

Javascript 使用knockout.js和json数据对列表进行排序,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在使用knockout.js构建一个排序列表。我有一个使用简单可观察数组的版本,但如何使用json数据和映射插件 您的元素已绑定到视图模型的allItems数组。但在映射结果时,只有一个对象具有可观察属性name。没有allItems属性。因此,您只会收到一个错误: 错误:无法分析绑定。 消息:ReferenceError:未定义所有项; 绑定值:foreach:allItems 另一个问题是,您得到的响应是单个项{“name”:“Stuart”}(不是项数组)。您不能只将该项分配给视图模

我正在使用knockout.js构建一个排序列表。我有一个使用简单可观察数组的版本,但如何使用json数据和映射插件


您的
元素已绑定到视图模型的
allItems
数组。但在映射结果时,只有一个对象具有可观察属性
name
。没有
allItems
属性。因此,您只会收到一个错误:

错误:无法分析绑定。 消息:ReferenceError:未定义所有项; 绑定值:foreach:allItems

另一个问题是,您得到的响应是单个项
{“name”:“Stuart”}
(不是项数组)。您不能只将该项分配给视图模型的
allItems
属性。您需要添加该项以查看模型项:

var viewModel = new ListSortModel();
ko.applyBindings(viewModel);

$.getJSON('http://echo.jsontest.com/name/Stuart', function (data) {
    var item = ko.mapping.fromJS(data); // make it observable
    viewModel.allItems.push(item); // add to view model items
});

我仍然希望使用映射插件从json映射数据。
var viewModel = new ListSortModel();
ko.applyBindings(viewModel);

$.getJSON('http://echo.jsontest.com/name/Stuart', function (data) {
    var item = ko.mapping.fromJS(data); // make it observable
    viewModel.allItems.push(item); // add to view model items
});