2013-03-09 1 views
2

Моей модели структурирована следующим образом:как установить магистральную модель idAttribute с помощью вложенного свойства

model = { 
    distance: 12.05, 
    widget: { 
     id: 1, 
     creationDate: '12/01/2012' 
    } 
} 

Как установить idAttribute модели быть идентификатором на свойстве виджета? Есть ли синтаксис для этого?

ответ

1

Как насчет того, чтобы переупорядочить/сплющить вашу модель, чтобы сделать id свойством верхнего уровня? Override разобрана и вам не нужно будет установить idAttribute:

var YourModel = Backbone.Model.extend({ 
    parse: function (response) { 
     var distance = response.distance; 
     response = response.widget; 
     response.distance = distance; 
     return response; 
    } 
}); 

Теперь идентификатор будет автоматически подобран Backbone в качестве идентификатора. Если вам нужно сохранить данные обратно в хранилище данных, вам нужно будет перезаписать методы, необходимые для преобразования данных. Если возможно, это было бы лучшим решением, если бы ваша модель была построена с идентификатором уже на верхнем уровне.

+0

У меня нет никаких заявлений о том, как я получаю данные, поэтому, хотя я хотел бы получить данные с идентификатором как атрибутом верхнего уровня, это просто не возможно. Какая производительность могла бы перестроить данные таким образом? – 2013-03-10 01:00:17

+1

Всё зависит от меня. Вы трансформируете очень большие количества этих моделей и как часто? – kinakuta

Смежные вопросы