2014-11-09 48 views
3

我試圖將REST API連接到我的ExtJS應用程序。ExtJS5:刪除代理中的根屬性

對於GET /user都要求我返回響應如下:

{items: [{id: 1, ...}, {id: 2, ....}], total: 2} 

所以我創建了一個模型:

Ext.define('model.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id', type: 'int' }, 
     { name: 'name' }, 
    ], 

    proxy: { 
     reader: { 
      type:   'json', 
      totalProperty: 'total', 
      rootProperty: 'items' 
     }, 
     type: 'rest', 
     url: '/Api/User', 
    } 
}); 

的網格數據加載和一切看起來很完美。現在我希望能夠請求我的API用作{id: 1, ...}的單個記錄。 但是,當我做model.User.load(1)成功處理程序永遠不會被觸發,因爲響應不包含items屬性。如果我把我的記錄放在那個屬性中,它會起作用,但對於其他API用戶也會看起來很醜。

如何在沒有根屬性的情況下使其工作?我無法在模型上找到代理/閱讀器的任何事件來動態更改它。

回答

7

rootProperty也可以是一個函數,所以你可以這樣做:

rootProperty: function(raw) { 
    return raw.items ? raw.items : raw; 
}