Подтвердить что ты не робот

Магистраль - с использованием другого имени поля для идентификатора

Я переношу старое приложение для использования backbone.js(надеюсь) Проблема в том, что ни один из различных объектов в системе не использует id для id - каждый объект отличается. Прочитав, я придумал решение ниже при инициализации Backbone.Model.

   initialize: function(){
    this.idAttribute = 'user_ID';
    this.set({'id':this.get('user_ID')});
 }

Я волнуюсь, однако, что, развиваясь с позвоночником, этот подход меня укусит. У кого-нибудь есть опыт с этим. Любые указатели получили высокую оценку.

edit: Я только что назвал isNew() на модели и получил правду, хотя теперь id установлен в 1. ///////////////////////////////////////////

Использование следующего, кажется, позволяет разобраться.

User = Backbone.Model.extend({
idAttribute : 'user_ID'

})

4b9b3361

Ответ 1

При использовании атрибута idAttribute основная магистраль сохраняет свойство id в синхронизации с свойством user_ID. Обычно он используется, когда вы определяете свой класс

var UserModel = Backbone.Model.extend({
    idAttribute: 'user_ID',
    initialize: function() {
        //do stuff
    }
});

var me = new UserModel({user_ID: 1234, name: 'Tim'});
console.log(me.id); //1234
console.log(me.get('user_ID')); //1234
console.log(me.isNew()); //false

var me2 = new UserModel({name: 'newUser'});
console.log(me2.isNew()); //true

Удача