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);