我不知道为什么,但我不能让这个工作.
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?
fgu*_*len 15
该Underscore.where方法返回的是Array不是Backbone.Collection因为它没有toJSON定义方法.
所以你可以做两件事:
var result = friends.where({job: "Musketeer"});
_.map( result, function( model ){ return model.toJSON(); } );
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();?
toJSON是一个令人困惑的方法名称:http://documentcloud.github.com/backbone/#Collection-toJSON
的toJSON
collection.toJSON()返回一个包含集合中每个模型的属性哈希的数组.这可以用于序列化和>保持整个集合.此方法的名称有点令人困惑,因为它符合JavaScript的> JSON API.
如果要将集合转换为JSON字符串,请使用 JSON.stringify
var friends = new Backbone.Collection([
  {name: "Athos",      job: "Musketeer"},
  {name: "Porthos",    job: "Musketeer"},
  {name: "Aramis",     job: "Musketeer"},
  {name: "d'Artagnan", job: "Guard"},
]);
JSON.stringify( friends.where({job: "Musketeer"}) );
请注意,where返回一个数组而不是Backbone集合,您必须构建一个新集合才能使用该toJSON方法.
| 归档时间: | 
 | 
| 查看次数: | 8569 次 | 
| 最近记录: |