idProperty в Сенча Touch 2.3.1

У меня есть модель:

 Ext.define('EvaluateIt.model.Address', {
    extend: 'Ext.data.Model',
    config: {
        idProperty: 'id', 
        fields: [
            {name: 'address', type: 'string'},
            {name: 'city', type: 'string'},
            {name: 'state', type: 'string'},
            {name: 'zipcode', type: 'string'},
            {name: 'county', type: 'string'}
        ],
        proxy: {
            type: "sql", 
            database: 'Test'
        }

    }
});

В моем контроллере я вставляю данные в эту модель следующим образом:

 var address = Ext.create('EvaluateIt.model.Address', {
     address: json[i].garden.address.address
  });
 address.save();

Где массив JSON захватывается через Ajax и таким образом вставляется в модель без каких-либо проблем.

Тем не менее, когда я пытаюсь получить доступ к идентификатору из модели, как,

console.log('address.id ' + address.id);

Я получаю что-то вроде ext-record-n (где n даже не отображается на id в моей таблице адресов). Как я могу сослаться на фактическое значение столбца id в этой таблице? Я попробовал это, но безуспешно: https://github.com/tomalex0/SenchaTouch-v2-SqliteProxy/issues/3

1 ответ

Решение

Добавление поля id в массив fields приведет к тому, что прокси создаст таблицу базы данных с идентификатором столбца в качестве поля AUTOINCREMENT.

Ext.define('EvaluateIt.model.Address', {
    extend: 'Ext.data.Model',
    config: {
        idProperty: 'id', 
        fields: [
            {name: 'id', type: 'int'},
            {name: 'address', type: 'string'},
            {name: 'city', type: 'string'},
            {name: 'state', type: 'string'},
            {name: 'zipcode', type: 'string'},
            {name: 'county', type: 'string'}
        ],
        proxy: {
            type: "sql", 
            database: 'Test'
        }

    }
});

Прокси будет считывать значение идентификатора, созданное базой данных. Вы можете получить доступ к значению, передав функцию обратного вызова в метод сохранения модели.

var address = Ext.create('EvaluateIt.model.Address', {
     address: json[i].garden.address.address
});

address.save(function(record) {
    console.log('address.id ' + record.getId();
}, this);
Другие вопросы по тегам