2015-09-22 52 views
0

我想要从商店中删除多个项目而无需刷新我的页面时遇到问题。我第一次删除的事件,一切都很好,你可以从这个小提琴片段看到:ExtJS存储销毁事件提交

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":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":""} 
] 

如果你仔细观察,你会看到相同的事件AP梨在第二个电话,但这不应该!除此之外,一切都很完美:每调用一次destroy就会调用Web API(因此在每次请求页面后首次调用)。第一次调用后,Web API仍被调用,但由于意外输入,绑定现在已损坏:它收到一个集合,而它只需要一个项目。

这里是撕:

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

});

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

回答

0

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