#extjs #extjs4 #extjs4.2
#extjs #extjs4 #extjs4.2
Вопрос:
код моего хранилища
Ext.define('Console.store.SubjectMaterial.DetailStore', {
extend: 'Ext.data.Store',
model: 'Console.model.SubjectMaterial.DetailModel',
proxy: {
actionMethods: 'POST',
type: 'ajax',
api: {
create: './modules/source/controller/SubjectMaterial/insertDetail.php',
read: './modules/source/store/SubjectMaterial/selectDetail.php',
destroy: './modules/source/controller/SubjectMaterial/deleteDetail.php'
},
reader: {
type: 'json',
root: 'result'
},
writer: {
type: 'json',
root: 'data',
encode: true
}
},
sorters: {
direction: 'ASC',
property: 'material_name'
},
remoteSort: true,
autoLoad: false,
autoSync: true
});
код моей модели
Ext.define('Console.model.SubjectMaterial.DetailModel',{
extend:'Ext.data.Model',
fields:[
{
name:'material_id',
type:'string'
},{
name:'material_name',
type:'string'
},{
name:'material_version',
type:'string'
},{
name:'material_picture',
type:'string'
},{
name:'material_detail',
type:'string'
},{
name:'material_url',
type:'string'
},{
name: 'material_size',
type: 'string'
},{
name: 'material_author',
type: 'string'
},{
name: 'subject_share',
type: 'string'
},{
name: 'subject_secure',
type: 'string'
},{
name: 'material_create_date',
type: 'string'
},{
name: 'material_update_date',
type: 'string'
}]
});
код моего контроллера
detailInsertConfirm: function(obj, e, eOpts) {
var masterSelectedRecord = Ext.getCmp('sumagridmaster').getSelectionModel().getSelection()[0];
var detailStore = Ext.getCmp('sumagriddetail').store;
var actionPanel = obj.up('sumaactionpanel');
var gridPanel = obj.up('sumaformdetailinsert');
// console.log(gridPanel);
// var formPanel = gridPanel.getForm();
//insert
detailStore.add(gridPanel.getSelectionModel().getSelection());
// detailStore.add(masterSelectedRecord);
console.log(detailStore.data);
// console.log(gridPanel.getSelectionModel().getSelection());
detailStore.sync({
callback: function(batch, options) {
// body...
console.log('this is callback.');
},
success: function(batch, options) {
console.log('this is success.');
Ext.MessageBox.show({
title: MSG['universal_msg_box_header_text'],
icon: Ext.MessageBox.INFO,
msg: MSG['universal_msg_box_content_insert_success'],
closable: false,
buttons: Ext.MessageBox.OK,
fn: function(buttonId,text,opt){
if (buttonId == 'ok') {
detailStore.reload();
}
}
});
},
failure: function(batch, options) {
console.log('this is failure.');
Ext.MessageBox.show({
titel: MSG['universal_msg_box_header_text'],
icon: Ext.MessageBox.ERROR,
msg: MSG['universal_msg_box_content_insert_fail'],
closable: false,
buttons: Ext.MessageBox.OK
});
}
});
И я не знаю, почему detailStore.sync моего элемента управления не может работать.
Не содержит кода ошибки.
Просто совершенно никакого ответа….
И я всегда проверяю свою сеть.
У него нет запроса.
Комментарии:
1. Попробуйте добавить
update
URL в свойapi
.2. Я добавляю finish. Но не отвечает…….
3. detailStore.sync этот метод полностью не реагирует….
Ответ №1:
Я не совсем уверен, о чем вы спрашиваете. Для работы синхронизации вам нужно что-то изменить в хранилище (модифицировать, удалить, добавить), вам нужен writer на прокси-сервере, и когда вы затем вызываете store.sync()
запрос (ы) отправляется на сервер. Только после этого приходит ответ.
Комментарии:
1. Я спрашиваю, что я не знаю, что мой store.sync() не работает. Но настройки хранилища в порядке.
2.
detailStore
autoSync:true
поэтому вы должны видеть запрос каждый раз, когда вы что-то меняете в хранилище. Не могли бы вы включить это fiddle.sencha.com значит, я могу увидеть это в действии?3. Я пытаюсь включить его fiddle.sencha.com.
4. Я не знаю, как использовать fiddle.sencha.com.
5. У вас есть skype??добавьте меня: maplescar520
Ответ №2:
Внутри прокси сделайте вашу автосинхронизацию:false . Когда автосинхронизация: true, тогда нет необходимости вызывать detailStore.sync({….}).