У меня есть объединенная коллекция в Backbone, которая содержит фотографии и альбомы.Backbone.js: Коллекция, содержащая несколько моделей с одинаковыми ID
Чтобы различить их, я добавил поле type
, которое либо photo
, либо album
. Когда я заполнить коллекцию, я создаю различные модели в рамках метода Collection#model
model: (attrs, options) ->
switch attrs.type
when 'album' then new App.Models.Album(attrs, options)
when 'photo' then new App.Models.Photo(attrs, options)
Теперь я discoverd странный баг, когда при добавлении фото и альбом с тем же ID (скажем 2
) результаты в слиянии.
Я отслеживал это до these LOC в исходном коде. Кажется, что он отменен без создания вилки самого Backbone. Я пробовал, но это также fails 35 tests.
Я подумал о 4-х различных способов сделать это, я не знаю, какой из них лучше один:
- Я мог бы добавить префикс к идентификатору. Скажем,
photo_2
. Это приводит к изменениям в бэкэнде, а также к некоторым изменениям в интерфейсе, чтобы не попасть на сервер по адресу/photos/photo_2
- Я мог бы переделать магистраль и change these LOC.
- я мог бы создать два отдельные коллекции, но приходится иметь дело с слиянием и своего родом в представлении (какие эффекты производительности клиентов и требует переписывания бэкэнда)
- Я мог бы начать с фотографией идентификатором, скажем
1000000
, Это чрезвычайно снизило бы вероятность того, что данный пользователь, который загрузил фотографию с данным ID, также создал альбом с тем же идентификатором.
Есть ли способ получить модель в качестве аргумента здесь, а не только ее атрибуты? –