ExtJS5 MVVC CRUD ajax 代理读取但不读取其他
ExtJS5 MVVC the CRUD ajax proxy does read but not the other
我从一个小测试开始,该测试包括在网格中显示来自 PostgreSQL 的数据。网格商店有一个 Ajax 代理。
以下是代码:
model/manage/Client.js
Ext.define('Chronos.model.manage.Client', {
extend : 'Ext.data.Model',
fields : [
{name : 'id', type: 'int'},
{name : 'name', type: 'string'}
]
});
store/manage/Client.js
Ext.define('Chronos.store.manage.Clients', {
extend : 'Ext.data.Store',
model : 'Chronos.model.manage.Client',
sorters : ['name'],
autoLoad : false,
autosync : true,
storeId : 'manageClientsStore',
proxy : {
type : 'ajax', // Ext.data.proxy.Ajax
api : {
create : 'api/management/clients.create.php',
read : 'api/management/clients.read.php',
update : 'api/management/clients.update.php',
destroy : 'api/management/clients.destroy.php'
},
reader : {
type : 'json', // Ext.data.reader.Json
rootProperty : 'records'
},
writer : {
type : 'json', // Ext.data.writer.Json
encode : true
}
}
});
view/manage/Client.js
Ext.define('Chronos.view.manage.Clients', {
extend : 'Ext.window.Window',
requires : [
'Chronos.view.manage.ClientsController',
'Chronos.model.manage.Client',
'Chronos.store.manage.Clients'
],
controller : 'manageclients',
modal : true,
layout : {
type : 'vbox',
align : 'stretch'
},
width : 300,
height : 500,
title : 'Kunden Verwaltung',
items: [{ // Grid
xtype : 'grid',
store : 'manage.Clients',
flex : 1,
selType : 'cellmodel',
plugins : 'cellediting',
dockedItems: [{
xtype: 'toolbar',
items: [{
xtype : 'button',
icon : 'resources/icons.32/kunden.neu.png',
text : 'Neuer Kunde',
scale : 'large',
handler : 'onClientAdd'
}, {
xtype : 'button',
icon : 'resources/icons.32/kunden.löschen.png',
text : 'Kunde löschen',
scale : 'large',
handler : 'onClientDelete',
disabled : true
}]
}],
columns: [{
text: 'id',
dataIndex: 'id',
align: 'right',
width: 50,
hidden: true
}, {
text: 'Name',
dataIndex: 'name',
flex : 1,
editor: {
xtype : 'textfield',
allowBlank: false
}
}],
listeners: {
render: {
scope: this,
fn: function(grid) {
grid.getStore().load();
}
}
}
}]
});
商店仅在呈现时加载,就像我想要的那样。
它可以很好地显示数据,但不能将它们写回。 Create、Update 和 Distroy url 都没有被调用(我知道,因为我在 php 代码中写了一个文件)。
我忘记了什么?
谢谢
一切正常,但是 autoSync
Ext.define('Chronos.store.manage.Clients', {
...
autoSync : true,
对不起
我从一个小测试开始,该测试包括在网格中显示来自 PostgreSQL 的数据。网格商店有一个 Ajax 代理。
以下是代码:
model/manage/Client.js
Ext.define('Chronos.model.manage.Client', {
extend : 'Ext.data.Model',
fields : [
{name : 'id', type: 'int'},
{name : 'name', type: 'string'}
]
});
store/manage/Client.js
Ext.define('Chronos.store.manage.Clients', {
extend : 'Ext.data.Store',
model : 'Chronos.model.manage.Client',
sorters : ['name'],
autoLoad : false,
autosync : true,
storeId : 'manageClientsStore',
proxy : {
type : 'ajax', // Ext.data.proxy.Ajax
api : {
create : 'api/management/clients.create.php',
read : 'api/management/clients.read.php',
update : 'api/management/clients.update.php',
destroy : 'api/management/clients.destroy.php'
},
reader : {
type : 'json', // Ext.data.reader.Json
rootProperty : 'records'
},
writer : {
type : 'json', // Ext.data.writer.Json
encode : true
}
}
});
view/manage/Client.js
Ext.define('Chronos.view.manage.Clients', {
extend : 'Ext.window.Window',
requires : [
'Chronos.view.manage.ClientsController',
'Chronos.model.manage.Client',
'Chronos.store.manage.Clients'
],
controller : 'manageclients',
modal : true,
layout : {
type : 'vbox',
align : 'stretch'
},
width : 300,
height : 500,
title : 'Kunden Verwaltung',
items: [{ // Grid
xtype : 'grid',
store : 'manage.Clients',
flex : 1,
selType : 'cellmodel',
plugins : 'cellediting',
dockedItems: [{
xtype: 'toolbar',
items: [{
xtype : 'button',
icon : 'resources/icons.32/kunden.neu.png',
text : 'Neuer Kunde',
scale : 'large',
handler : 'onClientAdd'
}, {
xtype : 'button',
icon : 'resources/icons.32/kunden.löschen.png',
text : 'Kunde löschen',
scale : 'large',
handler : 'onClientDelete',
disabled : true
}]
}],
columns: [{
text: 'id',
dataIndex: 'id',
align: 'right',
width: 50,
hidden: true
}, {
text: 'Name',
dataIndex: 'name',
flex : 1,
editor: {
xtype : 'textfield',
allowBlank: false
}
}],
listeners: {
render: {
scope: this,
fn: function(grid) {
grid.getStore().load();
}
}
}
}]
});
商店仅在呈现时加载,就像我想要的那样。
它可以很好地显示数据,但不能将它们写回。 Create、Update 和 Distroy url 都没有被调用(我知道,因为我在 php 代码中写了一个文件)。
我忘记了什么?
谢谢
一切正常,但是 autoSync
Ext.define('Chronos.store.manage.Clients', {
...
autoSync : true,
对不起