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();
}
}
}