【发布时间】:2011-09-03 15:52:37
【问题描述】:
假设我在客户端使用 extjs4 构建了这个 Web 应用程序,在服务器端使用 Zend 框架动作控制器。我在服务器端有一组数组,它们可以作为 JSON 输出到客户端。当我只想创建一个商店时,通常的方式是这样的:
Ext.define('MA.store.AdminResources', {
extend : 'Ext.data.Store',
fields : [ {
name : 'id'
}, {
name : 'name'
} ],
autoLoad : true,
proxy : {
type : 'ajax',
url : './account/adminresources',
reader : {
type : 'json'
//,root : 'users'
}
}
});
如果我想从对服务器的单个 http 请求创建多个 JSON 存储怎么办? 此服务器不会收到每个商店的远程代理请求,并且将为所有商店完成一个请求。 这是服务器返回的 JSON 示例:
{
"adminsettings"{"userid":3333,"primaryemail":"1@1.com","firstname":"","middlename":null}
,"countries":{"AD":"Andorra","AE":"UnitedArabEmirates","AF":"Afghanistan"...}
,"languages":{"aa":"Afar","ab":"Abkhazian","ace":"Achinese","ach":"Acoli"...
}}
如何通过向服务器发送一个 http 请求来创建用于管理设置、国家/地区、语言的 JSON 存储? 也许我需要定义一个代理和 3 个阅读器?!
【问题讨论】:
-
您是在问如何格式化 JSON 以表示多个商店?
-
@jfriend00 实际上我在询问如何在客户端处理该 JSON 以从该 JSON 创建多个商店。
-
在您的 JSON 响应中,哪些数据构成“存储”?我们不知道这个词是什么意思。我看到一组管理员设置,然后是国家列表和语言列表。哪些数据是“存储”?
-
他指的是 Ext.data.Store 意义上的“存储”。他想使用一个获取请求,并填充 2 个(或更多)Ext.data.Store。我也想要这个问题的答案。 :)
-
您需要定义字段;这就是它的工作方式。实际上,您可以发送比放入存储中的数据更多的数据(并且可能有这方面的用例)。此外,您通常应该在模型中定义您的字段,然后将您的商店指向所述模型(特别是如果您要实现 SMVC 范例)。
标签: javascript json extjs extjs4