Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS存储销毁事件提交_Javascript_Extjs_Asp.net Web Api_Scheduler - Fatal编程技术网

Javascript ExtJS存储销毁事件提交

Javascript ExtJS存储销毁事件提交,javascript,extjs,asp.net-web-api,scheduler,Javascript,Extjs,Asp.net Web Api,Scheduler,当我想从商店中删除多个项目而不必刷新页面时,我遇到了一个问题。我第一次删除一个事件时,一切都很好,正如您从这个小片段中看到的: 551 200 HTTP localhost:52543 /api/Appointments/Destroy?_dc=1442940419083 140 no-cache; Expires: -1 application/json; charset=utf-8 chrome:157528 数据: 但是,如果我想在不刷新

当我想从商店中删除多个项目而不必刷新页面时,我遇到了一个问题。我第一次删除一个事件时,一切都很好,正如您从这个小片段中看到的:

551   200   HTTP   localhost:52543   /api/Appointments/Destroy?_dc=1442940419083   140   no-cache; Expires: -1   application/json; charset=utf-8   chrome:157528         
数据:

但是,如果我想在不刷新页面的情况下删除其他项目,就好像事件存储区不接受或不理解先前删除的记录已经被处理一样:

[
 { Id":1749644,"StartDate":"2015-09-22T01:00:00+02:00","EndDate":"2015-09-22T03:00:00+02:00","ResourceId":9,"PreviousResourceId":0,"Name":"","Cls":""},
 {"Id":1749656,"StartDate":"2015-09-22T10:45:00+02:00","EndDate":"2015-09-23T16:00:00+02:00","ResourceId":20,"PreviousResourceId":0,"Name":"test","Cls":""}
]
如果你仔细观察,你会发现同样的事件也出现在第二次呼叫中,而这不应该出现!除此之外,一切都进行得非常顺利:Web API在每次1次destroy调用后调用,因此在每次页面请求后都是第一次调用。在第一次调用之后,Web API仍然被调用,但绑定现在由于意外输入而损坏:它接收一个集合,而它只需要1个项

这是地址:

Ext.define('SchedulerApp.store.EventStore', {
extend: "Sch.data.EventStore",
autosync: true,
batch: false,
proxy: {
    type: 'ajax',
    api: {
        create: '/api/Appointments/Add',
        update: '/api/Appointments/Update',
        destroy: '/api/Appointments/Destroy'
    },
    reader: {
        type: 'json'
    },
    writer: {
        type: 'json',
        writeAllFields: true
    }
},
listeners: {
    load: {
        fn: function (store, records, successfull) {
        }
    },
    create: {
        fn: function (store, records, successfull) {

        }
    },
    add: {
        fn: function (store, records, successfull) {
            //store.sync();
        }
    },
    update: {
        fn: function (store, records, successfull) {
            var previousResource = records.previous.ResourceId;
            records.data.PreviousResourceId = previousResource;
            records.store.sync();
        }
    },
    destroy: {
        fn: function (store, records, successfull) {
        }
    },
    remove: {
        fn: function (store, records, successfull) {
            store.sync();
        }
    }       
}
})


我需要弄清楚如何“接受”更新/插入/删除的记录。这是一个相当独立的问题,所以除了发布在这里的代码之外,其他代码都是无用的信息

结果我确实错过了商店的承诺功能。在回调的成功方法中,我添加了提交,问题消失了

Ext.define('SchedulerApp.store.EventStore', {
extend: "Sch.data.EventStore",
autosync: true,
batch: false,
proxy: {
    type: 'ajax',
    api: {
        create: '/api/Appointments/Add',
        update: '/api/Appointments/Update',
        destroy: '/api/Appointments/Destroy'
    },
    reader: {
        type: 'json'
    },
    writer: {
        type: 'json',
        writeAllFields: true
    }
},
listeners: {
    load: {
        fn: function (store, records, successfull) {
        }
    },
    create: {
        fn: function (store, records, successfull) {

        }
    },
    add: {
        fn: function (store, records, successfull) {
            //store.sync();
        }
    },
    update: {
        fn: function (store, records, successfull) {
            var previousResource = records.previous.ResourceId;
            records.data.PreviousResourceId = previousResource;
            records.store.sync();
        }
    },
    destroy: {
        fn: function (store, records, successfull) {
        }
    },
    remove: {
        fn: function (store, records, successfull) {
            store.sync();
        }
    }       
}