谁能告诉我我们应该在哪里编写创建/更新等代码片段。我是在proxy的api属性下写的。如何验证输出。请指导我如何使用 store api。
我正在进行测试,所以请更清楚地让我理解和使用该功能
谁能告诉我我们应该在哪里编写创建/更新等代码片段。我是在proxy的api属性下写的。如何验证输出。请指导我如何使用 store api。
我正在进行测试,所以请更清楚地让我理解和使用该功能
配置本身在文档中进行了描述。但听起来你的语法是正确的。
您应该知道的第一件事是此配置仅适用于扩展代理Ext.data.proxy.Server
。在此处阅读“代理类型”部分。
通过在此配置中定义不同的 URL,您只是告诉商店将 ajax 请求发送到何处以在您的服务器端执行不同的 CRUD 操作。
例如,调用store.load()
将向 URL 发送 ajax 请求,由api.read
您来确保此 URL 正确返回数据。
内部Ext.data.Store
跟踪对“脏”记录(创建、更新或销毁)执行的其他操作。基于此,它将向适当的api
配置 URL 发送 ajax 请求。或者,如果您执行了不同类型的操作,例如创建和删除记录,它将发送多个 ajax 请求(每个 URL 一个)以及有关您创建或删除的记录的数据。
下面是一些示例代码来说明这一点(如果您填写自己的 URL 和 ,您也可以将其用于测试data.model
)。该示例使用默认读取器/写入器,它将数据作为 JSON 发送到服务器(代理中有配置以指定不同的格式)。
var myStore = Ext.create('Ext.data.Store', {
model: 'MyApp.model.SomeModel',
proxy: {
type: 'ajax',
// without api defined ALL ajax calls will use the 'url' config
url: '/some/url',
api: {
create: '/some/url/to/insert/records/in/db',
read: '/some/url/to/select/records/from/db',
update: '/some/url/to/update/records/in/db',
destroy: '/some/url/to/delete/records/in/db'
}
}
}
// this calls the api.read URL
myStore.load();
// assuming we now have records, this will delete the first record
// on the client side (it will error if there are not records)
myStore.remove(myStore.first());
// the store knows we deleted a record so this will call the api.destroy URL
myStore.sync();
// this updates the first record on the client side
myStore.first().set('some_field_name', 'a string value');
// now we are creating a record on the client side
myStore.add(Ext.create('MyApp.model.SomeModel'));
// the store knows we updated AND created a record so this will call the
// api.update URL AND the api.create URL
myStore.sync();
关于此的另外两个有用的信息:
batchActions
文档中有一个称为此处描述的代理配置。默认情况true
下,这意味着当您向数据库发送请求时,某种类型的所有 CRUD 操作都会分组到一个数组中。例如,如果您删除了 4 条记录,您的
api.destroy
URL 将不会收到 4 个 ajax 请求,它将收到 1 个带有 4 条记录数组的 ajax 请求。只要您将 URL 配置为处理数组,这有助于减少网络流量。您可以将此配置设置为false
,商店将向api.destroy
URL 发送 4 个请求。您还可以设置编写器的allowSingle
配置(在此处描述)以确保所有请求都作为数组发送,即使只有一条记录(这样您就可以将服务器端代码设置为始终处理数组)。
Ext.data.Store
设置为处理创建和更新操作的回调,您只需确保您的 URL 发送回一个。当您致电商店时myStore.sync()
,商店将自动将客户端的记录替换为您在回调中发送的记录。这对于创建的记录很有用,因为您可以将正确的数据库 ID 与创建的记录一起发回,并使其在客户端可用,以后如果用户想要编辑或删除您有正确的数据库 ID 可以使用的记录。您还可以在服务器端进行其他处理,并将其他数据也发回,以便您拥有完整的记录(例如,我有时会发回创建用户 ID 和创建时间)。