Как выполнить действие на основе статуса ответа при выполнении синхронизации в Ext.js - PullRequest
0 голосов
/ 01 октября 2018

Это мой магазин MyStore.js

Ext.define('myProject.store.MyStore', {
    config:{
        storeId:    'MyStore',
        autoLoad:   false,
        autoSync:   false,
        allowSingle: true,
        clearOnPageLoad:    true,

        model:              'abc.model.MyStoreModel',
        proxy: {
            type:   'rest',
            actionMethods: {create: 'POST', read: 'GET', update: 'POST', destroy: 'POST'},
              url:'/services/rest/MyService/myService',
            reader: {
                type: 'json',
                rootProperty:MyServiceView.elements.collection',
                successProperty : 'success'
            },
            writer:
            {
                type: 'json',
                root: 'MyServiceDataView',
                nameProperty: 'mapping',
                expandData : true
            },
            listeners: {
                exception:          function(proxy,response,operation){

                }
            }   
        }
    }
});

Это моя модель

Ext.define( 'myProject.model.MyStoreModel', {
    extend:         'Ext.data.Model',
    config:{
        idProperty:     'keyStr',
        fields:[
                {
                    name:           'keyStr',
                    type:           'string',
                },
                {
                    name:           'sId',
                    type:           'int'
                },
                {
                    name:           'dCode',
                    type:           'string'
                },
                {
                    name:           'sNumber',
                    type:           'int'
                }

            ]
    },

});

Внутри моего Controller.js у меня есть этот метод

syncMyStore: function()
    {

        var deferred = Q.defer();
        var successfulSync= 'false';
        var me = this;
        var myStore = Ext.getStore('MyStore');

        if(this.isSyncRequires(myStore)) //assume this is always true
        {
            myStore.sync({
                success: function () {
                    successfulSync = 'true';
                    deferred.fulfill();
                }
            });
        }
        else
        {
            deferred.fulfill();
        }
        return successfulSync;
    },
  1. Предположим, у меня есть 5 записей в моем хранилище, т.е. record0, record2 ... record4.
  2. Для каждой записи он вызывает службу отдыха.Итого всего 5 вызовов Rest

Требование 1: Вместо использования свойства success я хочу выполнить некоторые действия на основе кода состояния.т. е. если код состояния 200, считайте его успешным.

Требование 2: после каждого вызова покоя я хочу удалить запись / пометить «грязный» как ложный на основе статуса ответа (200) для этой конкретной записи.

Значит, предположим, для записи1 иrecord2, если код состояния 200, тогда я хочу удалить / пометить dirty = false только для записи 1 и записи 2.

Я буду очень благодарен вам, если вы поможете мне с этим.

1 Ответ

0 голосов
/ 02 октября 2018

Предполагая, что record0, record1, record3 .. имеют какой-то уникальный способ идентификации.Сделайте ajax-вызов для каждой записи (REST api-вызов), а затем, если ответ 200, управление выполнит функцию «success».Затем, если в ответе есть данные для идентификации записей, выберите эту запись и измените ее грязный флаг на false.В функции сбоя сделайте то же самое и измените грязный флаг на true.Есть две вещи, которые вы должны выполнить, чтобы получить лучший ответто есть у меня будет гид, связанный с записью?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...