【发布时间】:2014-08-04 15:39:28
【问题描述】:
我有一个嵌套如下的 JSON 响应(简化,但格式相同):
{
"response":{
"v":"1.0",
"users":[
{
"firstName":"Nicole",
"LastName":"A",
},
{
"firstName":"John",
"LastName":"B",
},
{
"firstName":"Bob",
"LastName":"C",
}
],
}
}
这是模型:
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.Field'
],
config: {
fields: [
{
name: 'firstName'
},
{
name: 'lastName'
}
]
}
});
我是从 CityBars 的 sencha 架构师教程开始的,所以大部分代码应该是非常基础的,我只是试图从加载的 json 响应中获取用户。这是控制器:
Ext.define('MyApp.controller.User', {
extend: 'Ext.app.Controller',
launch: function() {
var me = this;
Ext.Viewport.setMasked({ message: 'Loading Attendees...' });
me.getUsers(function (store) {
me.getDataList().setStore(store);
});
},
getUsers: function(callback) {
var store = Ext.data.StoreManager.lookup('UserStore'),
url = 'http://urltogetjsonresponse'
store.getProxy().setUrl(url);
store.load(function() {
callback(store);
});
},
});
这里是商店:
Ext.define('MyApp.store.UserStore', {
extend: 'Ext.data.Store',
requires: [
'MyApp.model.User',
'Ext.data.proxy.JsonP',
'Ext.data.reader.Json'
],
config: {
model: 'MyApp.model.User',
storeId: 'UserStore',
proxy: {
type: 'jsonp',
reader: {
type: 'json',
rootProperty: 'response.user'
}
}
}
});
我尝试了“response.user”,但它对我不起作用。我已经看过了,知道如果用户属性与“响应”处于同一级别而不是嵌套在其下,则使用 rootProperty: 'user' 会起作用。我也尝试过添加记录:'users',但这似乎也不起作用。
如果有人知道这是否可行并且有一个简单的解决方案,那就太好了。我实际上并不了解代理是如何工作的,所以如果有人可以对此进行解释,那也会有所帮助。谢谢。
【问题讨论】:
标签: json nested sencha-touch-2 store sencha-architect