0
ストアする新しいアイテムを挿入するたびに、アプリはサーバーにマルチリクエストを送信します。最初の項目が挿入されると、POSTを1回、1回以上項目を... 2回などと呼び出します。プロキシはExtJsストアから複数のリクエストを送信します
のExtJSで新しいイムので、あなたは、いくつかのqustionsを解決するために私を助けることができます。すべてのものを同期方法の
- まずない、(、POSTをGET、PUT、DELETE)メソッドが呼び出されない理由store.sync()メソッドinvokなしで?
- なぜ私の投稿方法にのリクエストを掛けますか?
- PUTメソッドが正常に動作する場合、store.remove()(DELETE)メソッドが400エラー(不正リクエスト)をスローするのはなぜですか?
は、事前にありがとう
私の編集コントローラ:
Ext.define('MVC.controller.Edit', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'editForm > button#SaveRecord': {
click: this.onSaveButtonClick
},
'editForm > button#DeleteButton': {
click: this.onDeleteButtonClick
}
});
},
onSaveButtonClick: function (btn) {
//get reference to the form
var detailView = btn.up('editForm');
//get the form inputs
var data = detailView.getValues();
//see if the record exists
var store = Ext.getStore('TestStore');
console.log(data.id);
var record = store.getById(data.id);
if (!record) {
record = Ext.create('MVC.model.Note', {
title: data.title,
created: new Date(),
updated: new Date(),
text: data.text
});
store.insert(0, record);
store.sync();
Ext.MessageBox.alert('Created', record.id);
return;
}
record.set(data);
store.sync();
//manually update the record
detailView.updateRecord();
},
onDeleteButtonClick: function (btn) {
//get reference to the form
var detailView = btn.up('editForm');
//get the form inputs
var data = detailView.getValues();
var store = Ext.getStore('TestStore');
var record = store.getById(data.id);
store.remove(record);
store.sync();
}
});
ストア:
Ext.define('MVC.store.TestStore', {
extend : 'Ext.data.Store',
requires : [
'MVC.model.Note'
],
storeId : 'TestStore',
model : 'MVC.model.Note',
autoLoad: false,
proxy: {
type : 'rest',
url: 'rest/notes',
actionMethods : {
create : 'POST',
read : 'GET',
update : 'PUT',
destroy : 'DELETE'
},
reader: {
type: 'json',
rootProperty: 'data'
},
writer: {
type: 'json'
}
}
});
とモデル:
Ext.define('MVC.model.Note', {
extend: 'Ext.data.Model',
fields: [
{
name: 'id',
type: 'string'
},
{
name: 'title',
type: 'string'
},
{
name: 'created',
type: 'date'
},
{
name: 'updated',
type: 'date'
},
{
name: 'text',
type: 'string'
}
]
});