0

嗨,我的应用程序遇到了一个奇怪的行为:当我修改一个项目,然后我的代理发出一个 put 请求时,第一次是好的,第二次它发送两个请求:第一个带有前一个的数据,第二个使用实际数据,第三次发送三个请求,在我的系统上这不是一个大问题,因为最后我在我的数据库上得到了正确的值,但在我客户的系统上结果并不总是正确的。然后我想删除这种行为。

这是我的商店:

Ext.create('Ext.data.Store',
        {
            storeId: 'bbCompaniesStore',
            model:'Company',
            pageSize: pageSize,
            proxy:
            {
                idProperty : '_id',
                type: 'rest',
                url: 'data/companies/',
                autoload: true,
                noCache: true,
                sortParam: undefined,
                actionMethods:
                 {
                        create : 'PUT',
                        read   : 'GET',
                        update : 'POST',
                        destroy: 'DELETE'
                    },

                reader:
                {
                    type: 'json',
                    root: 'data',
                    totalProperty: 'total'
                },

            },// proxy
            listeners: {
                exception: function(proxy, response, operation) {
                    Ext.gritter.add({
                        title: MongoVision.text['action.' + operation.action] || operation.action,
                        text: (operation.error ? operation.error.statusText : null) || MongoVision.text.exception
                    }); 

                    // Ext JS 4.0 does not handle this exception!
                    switch (operation.action) {
                        case 'create':
                            Ext.each(operation.records, function(record) {
                                record.store.remove(record);
                            });
                            break;

                        case 'destroy':
                            Ext.each(operation.records, function(record) {
                                if (record.removeStore) {
                                    record.removeStore.insert(record.removeIndex, record);
                                }
                            });
                            break;
                    }
                }
                }
        }
);

这是我的模型:

Ext.define('Company',
{
extend: 'Ext.data.Model',
fields: [
        {
            name :  'id',
            type : 'string'
        },
        {
            name :'firm',
            type : 'string',
            allowBlank: false
        },{
            name : 'p'
        },
        {
            name: 'linee'
        },
        {
            name : 'c'
        },
        {
            name : 'data',
            type: 'date'
        },
        {
            name :'note'
        },
        { 
            name :'paese'
        },
        {
            name : 'email'
        },
        {
            name : 'telefono'
        },
        {
            name : 'type'
        },
        {
            name : 'website'
        },
        {
            name : 'session_id'
        },
        {
            name : 'group_id'
        }


],
proxy : {
    type : 'rest',
    url : 'data/companies/'
}

}
);

谷歌搜索后,我发现 extjs3 的类似问题,没有解决方案,我觉得很奇怪,经过这么长时间,还没有解决方案;它现在应该可以工作了

4

1 回答 1

1

我遇到了同样的问题,通过 batchActions: true在创建代理时简单地传递来解决它。“rest”代理的默认行为是关闭批处理....(参见 extjs/src/data/proxy/Rest.js)

于 2013-10-14T21:33:55.537 回答