设置 Sencha Touch 2 存储以检索少量数据以从 jsonp 响应生成多个模型实例可能很简单。但是,我正在开发一个应用程序,该应用程序可以处理服务器上可用的相当大的数据集(法律意见),所以我必须从服务器中检索可用记录的列表——如果你愿意的话,是一个索引——然后当用户点击列表中的项目时检索单个完整记录。
我正在寻找任何推荐的方法。这是我到目前为止设置的,只是部分工作:
- 我在服务器端定义了 :index 和 :show RESTful 操作来检索法律意见。
- 在客户端,我有一个模型和一个用于索引条目的存储(包括我的可用数据列表),它们通过来自服务器上 :index RESTful 操作的 jsonp 响应提取数据,以创建可用数据的索引在 List 组件中。这些索引条目中的字段不包含法律意见的全文,而仅包含当事人的姓名和引文。
- 我有一个模型并存储完整的法律意见。商店通过服务器上的 :show RESTful 操作一次从服务器提取一个法律意见。
当用户点击应用程序中法律意见列表中的一项时,监听器会触发一个事件,控制器会接收该事件。控制器使用列表项对应记录的 ID 来确定服务器上 :show 操作的正确 URL,如下所示:
# Controller: onDisplayAuthority: function(list, record) { console.log('onDisplayAuthority'); this.activateAuthorityView(record); var authorityView = this.getAuthorityView(); authorityStore = Ext.getStore('Authority'); var authorityId = record.getData().id; var url = 'http://localhost:3000/api/authorities/' + authorityId + '.json'; var proxy = { type: 'jsonp', url: url, reader: { type: 'json', rootProperty: "authority" } }; authorityStore.setProxy(proxy); authorityStore.load(); authority = authorityStore.first(); var data = authority.getData(); authorityView.setRecord(authority); authorityView.getComponent("authorityViewBody").setData(data); authorityView.getComponent("titlebar").setTitle(data.title); Ext.Viewport.animateActiveItem(authorityView, this.slideLeftTransition); }
此代码不起作用。出于某种原因,如果我console.log(authorityStore)
在上面的代码中运行,我可以看到其中authorityStore.data.all[0]
包含完整的法律意见。但是,当我运行时console.log(authorityStore.data.all[0])
,它会返回[]
。此外,authorityStore.first();
返回undefined
,虽然 Sencha Touch 2 文档显示这#first()
是一个有效存储的方法,并且authorityStore
是一个有效的存储。
所以,要么我错过了一些基本的东西,要么我只是在这方面人迹罕至。
有没有人 (i) 对我的问题有快速解决方案,或者 (ii) 另一种同时使用 :index: 和 :show 操作来减少无关数据传输的方法?