使用knockout.js与json数据排序列表
Sorted list using knockout.js with json data
我正在使用knockout.js构建一个排序列表。我有一个版本与一个简单的可观察数组工作,但我怎么能使它与我的json数据和使用映射插件工作?
http://jsfiddle.net/infatti/x66Ts/ // Here is my json data
var viewModel;
$.getJSON('http://echo.jsontest.com/name/Stuart', function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
});
// Here is my working version of the simple observable array. How can it work using json data and the mapping plugin?
var ListSortModel = function () {
// my items
this.allItems = ko.observableArray([
{ name: 'Denise' },
{ name: 'Charles' },
{ name: 'Bert' }
]);
// sorter
this.sortItems = function() {
this.allItems(this.allItems().sort(function(a, b) { return a.name > b.name;}));
};
};
ko.applyBindings(new ListSortModel());
您的<ul>
元素绑定到视图模型的allItems
数组。但是当你在映射结果时,你只有一个具有可观察属性name
的对象。没有allItems
性质。因此,您只会收到一个错误:
错误:无法解析绑定。消息:ReferenceError: allItems未定义;绑定值: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
});
相关文章:
- 对角度数据表中括号内的数字进行排序
- 对损坏的子行进行排序的数据表
- 数据表排序但对行进行分组
- 角度未排序数据
- 数据表通过分析一列的值对其进行排序
- 排序数据表
- 对d3堆叠条形图的数据进行排序
- 如何对JQuery Handlebar生成的数据进行排序
- 数组数据排序类似mysql查询
- 使用JQuery对子表数据排序
- 数据排序应该在客户端还是服务器上完成
- a不同列列表的未定义或空引用的数据排序错误
- 日历数据排序 json 树
- 如何在ng-repeat中使用嵌套对象将数据排序为angular js中的JSON数据
- 使用knockout.js与json数据排序列表
- 如何突出显示页面上数据排序类型的菜单项
- dojox.grid.EnhancedGrid中的数据排序
- 在循环值时对JSON数据排序
- 帮助将DIV中的属性数据排序捕获为数组?Jquery/Javascript
- 如何从属性创建数组'数据排序'使用显示的所有分区的Jquery