2014-04-06 202 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

甜!像魅力一樣工作。現在你提到它了,我將嘗試使用商店,但我需要訪問模型的關聯。再次感謝! –