我不知道为什么,但我不能让它工作。
var friends = new Backbone.Collection([
{name: "Athos", job: "Musketeer"},
{name: "Porthos", job: "Musketeer"},
{name: "Aramis", job: "Musketeer"},
{name: "d'Artagnan", job: "Guard"},
]);
friends.where({job: "Musketeer"}).toJSON()
我收到
Uncaught TypeError: Object [object Object] has no method 'toJSON'
.我做错了什么,如何将过滤后的集合转换为 JSON?
最佳答案
什么Underscore.where
方法返回的是 Array
不是 Backbone.Collection
所以它没有 toJSON
方法定义。
所以你可以做两件事:
迭代元素并映射结果:
var result = friends.where({job: "Musketeer"});
_.map( result, function( model ){ return model.toJSON(); } );
jsFiddle code
实现一个返回正确 Backbone.Collection 的 Collection searcher 方法:
var Friends = Backbone.Collection.extend({
search: function( opts ){
var result = this.where( opts );
var resultCollection = new Friends( result );
return resultCollection;
}
});
var myFriends = new Friends([
{name: "Athos", job: "Musketeer"},
{name: "Porthos", job: "Musketeer"},
{name: "Aramis", job: "Musketeer"},
{name: "d'Artagnan", job: "Guard"},
]);
myFriends.search({ job: "Musketeer" }).toJSON();
jsFiddle code
关于backbone.js - Backbone.Collection#where 上的 toJSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548685/