Проблема с api destroy
Всем привет. У меня есть маленький вопрос. Есть такой вот data.Store для grid.Panel:
Ext.define('MyFirstApplication.EmployeeStore', { extend:'Ext.data.Store', model: 'MyFirstApplication.EmployeeModel', autoLoad: true, pageSize: 10, proxy: { type: 'ajax', api: { create: '/List/Create', read: '/List/Read', update: '/List/Update', destroy: '/List/Delete' }, reader: { type: 'json', rootProperty: 'data', messageProperty: 'meta.msg', metaData: 'meta', idProperty: 'id', totalProperty: 'meta.total', successProperty: 'meta.success' }, writer: { type: 'json', writeAllFields: true, allowSingle: false, clientIdProperty: null } } }); Когда я читаю записи у меня URL "GET /List/Read?_dc=1436178329384&page=1&start=0&limit=10 HTTP/1.1". Когда создаю запись URL "POST /List/Create?_dc=1436178336225 HTTP/1.1" с JSON "[{"id":null,"firstName":"Иван","lastName":"Ив анов","email":"ivanovivan@email.com"}]". Когда изменяю запись URL "POST /List/Update?_dc=1436178590827 HTTP/1.1" с JSON "[{"id":11,"firstName":"Иван","lastName":"Ива нов","email":"ivanovivan@email.com"}]". Но вот когда удаляю запись - начинается интересное: URL "POST /MyFirstApplication.EmployeeModel?_dc=1436178791556 HTTP/1.1" с JSON "{"id":11}". А расчитываю на такое: URL "POST /List/Delete?_dc=1436178590827 HTTP/1.1" с JSON "[{"id":11,"firstName":"Иван","lastName":"Ива нов","email":"ivanovivan@email.com"}]". Подскажите пожалуйста где я ошибся. |
похоже на фантомную запись. Вы эту запись прочитали с сервера или создали на клиенте?
|
Она возникает когда я на клиенте (в браузере) пытаюсь из grid.Panel удалить запись. Хотя в api {... destroy: '/List/Delete'} прописано куда должен обратиться в случае удаления записи ajax. Причем "MyFirstApplication.EmployeeModel" это название моей модели. Еще не понятно почему в JSON отправляется только id, когда указано writeAllFields: true.
|
Проблему решил. Я ошибочно обращался при удалении к модели, а не к хранилищу.
|
В грид эта запись (11) попала с сервера или была создана в браузере? Попытался повторить этот случай. Отправляет в Delete со значением всех полей.
https://fiddle.sencha.com/#fiddle/pu5 Ext.define('MyFirstApplication.EmployeeModel', { extend: 'Ext.data.Model', fields: ['id', 'firstName'] }); Ext.define('MyFirstApplication.EmployeeStore', { extend:'Ext.data.Store', model: 'MyFirstApplication.EmployeeModel', autoLoad: true, pageSize: 10, proxy: { type: 'ajax', api: { create: '/List/Create', read: '/List/Read', update: '/List/Update', destroy: '/List/Delete' }, reader: { type: 'json', rootProperty: 'data', messageProperty: 'meta.msg', metaData: 'meta', idProperty: 'id', totalProperty: 'meta.total', successProperty: 'meta.success' }, writer: { type: 'json', writeAllFields: true, allowSingle: false, clientIdProperty: null } } }); Ext.application({ name : 'Fiddle', launch : function() { var store = Ext.create('MyFirstApplication.EmployeeStore', { data: [ {"id":11,"firstName":"Иван","lastName":"Ива нов","email":"ivanovivan@email.com"} ] }); var record = store.findRecord('id', 11); record.drop(); store.sync(); console.log(record); } }); |
Большое спасибо. Я уже разобрался. Я ошибочно обращался при удалении к модели, а не к хранилищу.
|
Замечательно! Если перенести определение прокси из хранилища в модель, то можно будет удалять запись и саму по себе, и в составе хранилища.
|
Часовой пояс GMT +3, время: 23:59. |