Я пытаюсь настроить небольшую пару моделей с помощью Backbone Relational, но я не понимаю, как запускается событие удаления.
Вот код моей модели:
var Car = Backbone.RelationalModel.extend({
idAttribute: "id"
});
var Cars = Backbone.Collection.extend({
model: Car
});
var CarCollection = new Cars();
var User = Backbone.RelationalModel.extend({
idAttribute: 'id',
relations: [{
type: Backbone.HasMany,
key: 'model',
relatedModel: Car,
collectionType: Cars,
includeInJSON: 'model',
reverseRelation: {
key: 'ownedBy',
includeinJSON: 'name'
}
}]
});
var Users = Backbone.Collection.extend({
model: User
});
var UserCollection = new Users();
//Bootstrap data and put it in the collections
var carsData = [
{id:1, model:'500',ownedBy:1},
{id:2, model:'Corsa',ownedBy:2},
{id:3, model:'Civic',ownedBy:2}
];
var usersData = [
{id:1,name:'Dude'},
{id:2,name:'Mark'}
];
CarCollection.add(carsData);
UserCollection.add(usersData);
Что я получаю в JSON, так это:
UserCollection = {"id":1,"name":"Dude","model":["500"]}{"id":2,"name":"Mark","model":["Corsa","Civic"]}
CarCollection = {"id":1,"model":"500","ownedBy":"Dude"}{"id":2,"model":"Corsa","ownedBy":"Mark"}{"id":3,"model":"Civic","ownedBy":"Mark"}
Теперь, если я добавлю элемент в CarCollection следующим образом:
CarCollection.add({id:4,model:'Prius',ownedBy:1};);
Событие «добавить» запускается, но если я удалю один элемент из коллекции:
var el = CarCollection.get(1);
CarCollection.remove(el);
Ни одно событие не запускается.
Я решил это с помощью обходного пути, например:
var el = CarCollection.get(1);
el.destroy();
или отмените регистрацию непосредственно в Backbone.store:
Backbone.Relational.store.unregister(el);
или просто установить для свойства ownedBy значение null:
var el = CarCollection.get(1);
el.set("ownedBy",null);
Это правильное поведение плагина? Или я неправильно настроил свои модели? Спасибо за каждый ответ.