Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2015, 13:54
Новичок на форуме
Отправить личное сообщение для Koluchiy Посмотреть профиль Найти все сообщения от Koluchiy
 
Регистрация: 05.07.2015
Сообщений: 6

Проблема с 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"}]".

Подскажите пожалуйста где я ошибся.
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2015, 15:29
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

похоже на фантомную запись. Вы эту запись прочитали с сервера или создали на клиенте?
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2015, 15:33
Новичок на форуме
Отправить личное сообщение для Koluchiy Посмотреть профиль Найти все сообщения от Koluchiy
 
Регистрация: 05.07.2015
Сообщений: 6

Она возникает когда я на клиенте (в браузере) пытаюсь из grid.Panel удалить запись. Хотя в api {... destroy: '/List/Delete'} прописано куда должен обратиться в случае удаления записи ajax. Причем "MyFirstApplication.EmployeeModel" это название моей модели. Еще не понятно почему в JSON отправляется только id, когда указано writeAllFields: true.

Последний раз редактировалось Koluchiy, 06.07.2015 в 15:35.
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2015, 15:46
Новичок на форуме
Отправить личное сообщение для Koluchiy Посмотреть профиль Найти все сообщения от Koluchiy
 
Регистрация: 05.07.2015
Сообщений: 6

Проблему решил. Я ошибочно обращался при удалении к модели, а не к хранилищу.
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2015, 15:47
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

В грид эта запись (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);
    }
});
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2015, 16:16
Новичок на форуме
Отправить личное сообщение для Koluchiy Посмотреть профиль Найти все сообщения от Koluchiy
 
Регистрация: 05.07.2015
Сообщений: 6

Большое спасибо. Я уже разобрался. Я ошибочно обращался при удалении к модели, а не к хранилищу.
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2015, 16:38
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Замечательно! Если перенести определение прокси из хранилища в модель, то можно будет удалять запись и саму по себе, и в составе хранилища.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Api google chrome Rvoid Opera, Safari и др. 1 10.08.2015 14:48
Проблема с api yandex maps slovnosvoboda Элементы интерфейса 0 24.11.2014 17:02
HTML5 Geolocation API, вопрос о снятии данных User-Agent (X)HTML/CSS 2 22.02.2013 20:09
Google API, проблема с Chrome gurun Общие вопросы Javascript 1 22.08.2011 13:17
MVC vs API. Ваше мнение. B~Vladi Общие вопросы Javascript 58 19.10.2010 16:29