Sencha Touch 2.3.1中的idProperty

时间:2014-04-06 03:57:08

标签: extjs sencha-touch getter

我有模特:

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

通过Ajax抓取json数组并因此插入到模型中没有任何问题。

然而,当我尝试从模型中访问id时,

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

我得到了ext-record-n形式的东西(其中n甚至没有映射到我的地址表中的id)。如何在此表中引用id列的实际值?我尝试了这个,但没有成功:https://github.com/tomalex0/SenchaTouch-v2-SqliteProxy/issues/3

1 个答案:

答案 0 :(得分:1)

将id字段添加到fields数组将导致代理创建数据库表,其列id为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'
        }

    }
});

代理将读取数据库创建的id值。您可以通过将回调函数传递给模型保存方法来访问该值。

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

address.save(function(record) {
    console.log('address.id ' + record.getId();
}, this);