如何在 Sencha Touch 2 proxy/model/store/whatever 上设置 CRUD 方法?
Posted
技术标签:
【中文标题】如何在 Sencha Touch 2 proxy/model/store/whatever 上设置 CRUD 方法?【英文标题】:How to set CRUD methods on Sencha Touch 2 proxy/model/store/whatever? 【发布时间】:2012-03-03 23:20:08 【问题描述】:我正在与合作伙伴一起构建 Sencha Touch 2 数据库应用程序。他在后端为我构建了大量的方法,语法如下:
index.php?r=show/update index.php?r=show/add index.php?r=show/delete index.php?r=person/add每一个都希望与它一起发送一个 POST。
我正在努力解决代理应该是什么样子的问题 - 例如,有没有办法指定将 /update /add 和 /delete 映射到其关联的 U/C/D 操作的显示代理?代理中只有一个 url,用于获取操作(在本例中为 getByUser)
我假设我想以某种方式将其他操作放入代理中 - 还是我只需要为每个操作设置一堆不同的代理(这似乎有点多余......)
Sencha 文档暗示 CRUD 操作是内置于代理的,但我看不出它们的 url 在哪里或如何定义...
Ext.define('SMToolkit.store.Shows',
extend: 'Ext.data.Store',
config:
model: 'SMToolkit.model.Show',
autoLoad: true,
sorters: 'name',
grouper:
groupFn: function(record)
return record.get('type');
,
proxy:
type: 'ajax',
url : 'index.php?r=show/getByUser&username=FOO'
);
使用如下所示的模型:
Ext.define('SMToolkit.model.Show',
extend: 'Ext.data.Model',
config:
fields: [
'id',
'name',
'opening',
'closing',
'rehearsal',
'type',
'availability'
]
);
【问题讨论】:
【参考方案1】:当您应该为每个操作提供一个特定的 URL 时,ST2 会为您提供 API 属性。您应该将您的代理更改为:
proxy:
type: 'ajax',
api:
create : 'index.php?r=show/add',
read : 'index.php?r=show/read',
update : 'index.php?r=show/update',
destroy: 'index.php?r=show/delete'
请注意,我删除了 url 属性并添加了 api 属性。此外,要删除,您必须输入单词“destroy”,因为在 javascript 中,“delete”是保留字。
【讨论】:
以上是关于如何在 Sencha Touch 2 proxy/model/store/whatever 上设置 CRUD 方法?的主要内容,如果未能解决你的问题,请参考以下文章