1

以下はExtJSの場合です

だから私は私の見解で次のことを試みています。(基本的にはレコードを削除します) しかし、何らかの理由で、サーバーに「destroyRecord」呼び出しを送信することさえしません。なぜこれが起こっているのでしょうか?以下のコード。

以下の module.getResults と module.destroyRecord は、実際のサーバー呼び出しを作成する同じ関数を呼び出すことに注意してください。module.getResults が適切に呼び出され、レコードを適切に取得できますが、「destoryRecord」セクションにヒットするようには見えません。hasMany パラメータと関係があるのか​​ どうか疑問に思っていますが、肯定的ではありません。どんな助けでも有益です。

意見:

var record = this.down('form').getRecord();
var store = Ext.getStore('ModuleStore');
store.remove(record);

店:

Ext.define('MyApp.store.ModuleStore', {
extend: 'Ext.data.Store',

requires: [
    'MyApp.model.ModuleModel'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        autoSync: true,
        filterOnLoad: false,
        remoteFilter: true,
        remoteSort: true,
        sortOnLoad: false,
        storeId: 'module',
        model: 'MyApp.model.ModuleModel',
        buffered: true,
        listeners: {
            write: {
                fn: me.onStoreWrite,
                scope: me
            },
            remove: {
                fn: me.onStoreRemove,
                scope: me
            },
            datachanged: {
                fn: me.onStoreDataChangeD,
                scope: me
            }
        }
    }, cfg)]);
},

onStoreRemove: function(store, record, index, options) {
    console.log('remove'); // Isn't called for some reason
}

});

モデル:

Ext.define('MyApp.model.ModuleModel', {
extend: 'Ext.data.Model',

uses: [
    'MyApp.model.ModuleHistoryModel'
],

idProperty: 'id',

fields: [
    {
        name: 'id',
        type: 'int'
    },
    {
        name: 'AmendmentNumber',
        type: 'string'
    },
    {
        name: 'contract_id',
        type: 'int'
    }
],

proxy: {
    type: 'direct',
    api: {
        create: module.createRecord,
        read: module.getResults,
        update: module.updateRecords,
        destroy: module.destroyRecord
},
    reader: {
        type: 'json',
        root: 'data'
    }
},

hasMany: {
    model: 'MyApp.model.ModuleHistoryModel',
    foreignKey: 'Module_id',
    name: 'history'
}
});

モジュール履歴モデル:

Ext.define('MyApp.model.ModuleHistoryModel', {
extend: 'Ext.data.Model',

uses: [
    'MyApp.model.MaintTypeModel'
],

fields: [
    {
        name: 'id',
        type: 'int'
    },
    {
        name: 'ContractNumber',
        type: 'string'
    },
    {
        name: 'MaintType_id',
        type: 'int'
    },
    {
        name: 'Module_id',
        type: 'int'
    }
],

proxy: {
    type: 'direct',
    api: {
        create: modulehistory.createRecord,
        read: modulehistory.getResults,
        update: modulehistory.updateRecords,
        destroy: modulehistory.destroyRecord
},
    reader: {
        type: 'json',
        root: 'data'
    }
},

belongsTo: {
    associationKey: 'MaintType',
    model: 'MyApp.model.MaintTypeModel',
    getterName: 'getMaintType',
    foreignKey: 'MaintType_id',
    setterName: 'setMaintType'
}
});

メインタイプ モデル:

Ext.define('MyApp.model.MaintTypeModel', {
extend: 'Ext.data.Model',

idProperty: 'id',

fields: [
    {
        name: 'id',
        type: 'int'
    },
    {
        name: 'Type',
        type: 'string'
    }
],

proxy: {
    type: 'direct',
    api: {
        create: mainttype.createRecord,
        read: mainttype.getResults,
        update: mainttype.updateRecords,
        destroy: mainttype.destroyRecord
},
    reader: {
        type: 'json',
        root: 'data'
    }
}
});
4

1 に答える 1

1

ストア同期も呼び出す必要があるため、グリッドをサーバーと同期します。

var record = this.down('form').getRecord();
var store = Ext.getStore('ModuleStore');
store.remove(record);
store.sync();

ドキュメントを送りますが、ダウンしているようです。

于 2012-10-31T04:06:00.297 に答える