Мое приложение отправляет многократно запрос на сервер каждый раз, когда я вставляю новый элемент для хранения. Когда первый элемент вставлен, он вызывает POST один раз, еще один элемент ... дважды и так далее.Прокси отправляет многократные запросы из магазина ExtJs
Im новый в ExtJS, так что вы можете мне помочь в решении некоторых Qustions:
- Прежде всего то, что метод синхронизации сделать, почему (GET, POST, PUT, DELETE) методы не называются без метода store.sync() invok?
- Почему мой метод сообщения умножить просит?
- Почему метод store.remove() (DELETE) вызывает ошибку 400 (Плохой запрос), когда метод PUT работает нормально?
Спасибо заранее
мой редактировать контроллер:
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'
}
]
});