Проблема с 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:16. |