为什么pluck()
和where()
方法不起作用?
var Model = Backbone.Model.extend({
name:'sasha',
time:'now',id:67
})
var model = new Model;
var Model2 = Backbone.Model.extend({
name:'andrii',
time:'now',id:45
})
var model2 = new Model2;
var Model3 = Backbone.Model.extend({
name:'sergii',
time:'now',id:7
})
var model3 = new Model3;
var Library = Backbone.Collection.extend({
initialize:function(){console.log('init')}
})
var lib = new Library([model]);
lib.on('add',function(){
console.log('add event')
})
lib.on('reset',function(){
console.log('reset event')
})
lib.on('remove',function(){
console.log('rremove event')
})
lib.push(model);
lib.push(model2);
lib.push(model3);
pluck
方法在返回用户名时返回undefined
值数组。
var names = lib.pluck("name");//[undefined, undefined, undefined]
where
返回一个空数组而不是id为7的模型。
var wh = lib.where({id:7}) //[]
答案 0 :(得分:6)
这不是模特的工作方式。您应该使用Backbone.Model.extend
来定义模型结构,然后创建它的新实例来表示数据。
var Person = Backbone.Model.extend({
/* your custom methods here */
});
var person1 = new Person({
id: 67,
name: 'sasha'
});
var person2 = new Person({
id: 45,
name: 'andrii'
});
var person3 = new Person({
id: 7,
name: 'sergii'
});
创建集合时,您可以定义正在使用的模型:
var Library = Backbone.Collection.extend({
model: Person
});
var lib = new Library();
lib.push(person1);
lib.push(person2);
lib.push(person3);
使用它应该按预期工作:
var names = lib.pluck('name'); // ["sasha", "andrii", "sergii"]
var wh = lib.where({id: 7}); // [{"id": 7, ...}]