2014-11-09 2 views
3

Я пытаюсь подключить REST API к моему приложению ExtJS.ExtJS5: избавиться от свойства root в прокси

Для 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.

Как я могу заставить его работать без свойства root? Я не могу найти какие-либо события для прокси/читателя на модели, чтобы динамически изменять ее.

ответ

7

rootProperty также может быть функцией, так что вы могли бы сделать что-то вроде:

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