我制作了我的第一个主干应用程序,但在集合排序方面遇到了一些问题。
使用这个后
var SortedFriends = MyFriends.sortBy(function(friend) {
return friend.get("uid");
});
console.log(SortedFriends) 显示 SortedFriends 包含排序模型,但是当我尝试使用“SortedFriends.each”或“SortedFriends.at”等集合函数时,会出错:
类型错误:SortedFriends.each 不是函数。
Code:
var Friend = Backbone.Model.extend({});
var Friends = Backbone.Collection.extend({
model: Friend,
});
var MyFriends = new Friends();
MyFriends.reset(<?=$friends?>);
var FriendView = Backbone.View.extend({
initialize: function(){
model:Friend
},
tagName: "tr",
template: _.template($('#item-template').html()),
className: "document-row",
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
var SortedFriends = MyFriends.sortBy(function(friend) {
return friend.get("uid");
});
var addOne = function(element){
var view = new FriendView({model: element});
$("#friends").append(view.render().el);
}
console.log(JSON.stringify(SortedFriends));
SortedFriends.each(function(friend){
var view = new FriendView({model: friend});
$("#friends").append(view.render().el);
});
如果您使用主干集合,那么您最好使用comparator
而不是收集方法
http://backbonejs.org/#Collection-comparator http://backbonejs.org/#Collection-comparator
当您准备好对集合进行排序时:
MyFriends.comparator = function(friend){
return friend.get("uid");
});
MyFriends.sort();
或者,如果您想保留未排序集合的顺序,那么您需要先克隆它
http://backbonejs.org/#Collection-clone http://backbonejs.org/#Collection-clone
var SortedFriends = MyFriends.clone();
SortedFriends.comparator = function(friend){
return friend.get("uid");
});
SortedFriends.sort();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)