2014-04-06 141 views
0

我有模式:idProperty在煎茶触摸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抓起并因此插入到模型中而没有任何问题。

然而,当我试图从模型访问ID一样,

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

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

回答

1

将id字段添加到字段数组将导致代理创建数据库表,并将列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); 
+0

我刚试过这个杰夫,但它展示了同样的行为。这里是一个输出示例:地址ID是ext-record-24 ...任何想法? –

+0

对不起,直接使用模型而不是使用商店时,它有点不同。我编辑了我的答案,以获取传递给save方法的回调函数中的id值。 –

+0

甜!像魅力一样工作。现在你提到它了,我将尝试使用商店,但我需要访问模型的关联。再次感谢! –