Как установить idAttribute магистральной модели с помощью вложенного свойства
Моя модель построена так:
model = {
distance: 12.05,
widget: {
id: 1,
creationDate: '12/01/2012'
}
}
Как установить idAttribute модели в качестве идентификатора свойства виджета? Есть ли синтаксис для этого?
1 ответ
Решение
Как насчет перестановки / выравнивания вашей модели, чтобы сделать id свойством верхнего уровня? Переопределите синтаксический анализ, и вам не нужно будет устанавливать idAttribute:
var YourModel = Backbone.Model.extend({
parse: function (response) {
var distance = response.distance;
response = response.widget;
response.distance = distance;
return response;
}
});
Теперь идентификатор будет автоматически выбран Backbone в качестве идентификатора. Если вам необходимо сохранить данные обратно в хранилище данных, вам необходимо перезаписать методы, необходимые для преобразования данных обратно. Если возможно, было бы лучше, если бы ваша модель была структурирована с идентификатором уже на верхнем уровне.