Элемент разбора backbone.js 1 (идентификатор) - PullRequest
2 голосов
/ 06 июля 2011

Для идентификатора на модели в магистрали, это просто id и все в нижнем регистре.Что делать, если мой идентификатор на сервере называется UserId.В методе разбора для магистрали, как я могу изменить UserId на id и использовать те же имена для всех других свойств?

Например,

window.User = Backbone.Model.extend({
    defaults:
       {
           UserId: 0, // <--can i just tell backbone that this is my id?
           Name: '',
           Age: 0
       }
    parse: function(response){
           var model = response;
           model.id = response.UserId;
           return model;
       }
});

Есть ли лучшеспособ сделать это?

Как насчет того, чтобы сообщить модели магистрали, что мой идентификатор имеет тип UserId.

Ответы [ 3 ]

7 голосов
/ 12 июля 2011

Вы должны указать Backbone, какое свойство является вашим идентификатором, используя idAttribute в модели:

window.User = Backbone.Model.extend({
    idAttribute: "UserId",
    ...
})

и все отлично работает :). Backbone создаст для вас id свойство, а коллекции этой модели будут get() вашими UserId.

2 голосов
/ 06 июля 2011

Сделайте так:

parse: function(response) {
  var attrs = {};
  attrs.id = response.UserId;
  return attrs;
}

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

0 голосов
/ 02 февраля 2012

Чтобы установить идентификатор, я бы сделал, как говорит Мауромартини.Чтобы изменить любое другое свойство, вам не нужно создавать какие-либо частные переменные, ответ от сервера - это просто объект, поэтому манипулируйте им и возвращайте его.

window.User = Backbone.Model.extend({
  defaults: { UserId: 0 },
  parse: function(response){
    response.id = response.UserId;
    return response;
  }
});

, вы также можете добавить следующее, прежде чем вернутьобъект, если вы хотите сохранить модель в чистоте:

delete response.UserId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...