Как установить 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 в качестве идентификатора. Если вам необходимо сохранить данные обратно в хранилище данных, вам необходимо перезаписать методы, необходимые для преобразования данных обратно. Если возможно, было бы лучше, если бы ваша модель была структурирована с идентификатором уже на верхнем уровне.

Другие вопросы по тегам