我正在学习Sencha Touch 2,我需要一个全局变量。我使用以下代码在我的应用程序.js文件中设置了一个名为 TID 的全局变量:
....
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
Ext.Viewport.add(Ext.create('Layouts.view.Main'));
TID = 7;
},
....
在 LIST 视图中,我成功确认了默认设置值并使用以下代码重置该值:
....
itemtap: function(data, index){
var record = data.getStore().getAt(index);
var store = Ext.getStore('Sections');
this.fireEvent('ListContent', store.getData().all[index].data.tid);
this.TID = store.getData().all[index].data.tid;
console.log('Confirming TID: ' + this.TID);
console.log('Confirming TID: ' + TID);
},
....
控制台.log代码返回以下输出:
Confirming TID: 10
Confirming TID: 7
我正在尝试在应用商店中使用此 TID 值使用以下代码过滤来自远程服务器的内容:
....
proxy: {
type: 'ajax',
url: 'http://myserver/sections/content/'+this.TID,
reader: {
type: 'json',
rootProperty: 'JSON',
}
},
....
这就是问题所在。这。TID 或 TID 在我的浏览器的网络流量中检查时都返回未定义。
url
参数是在创建类本身时设置的,而不是在实例化Store
时设置的。因此,首次读取该文件时,TID
尚未设置,Section
配置不会再次读取。您可能与现有设置相关的是使用
var store = Ext.getStore('Sections');
store.getProxy().setUrl('http://myserver/sections/content/' + TID);
store.load( ... );
若要抽象出此功能,向Store
添加一个创建正确 URL 的方法会更安全。
setUrlForTid: function(tid) {
this.getProxy().setUrl('http://myserver/sections/content/' + tid);
}
但是,理想情况下,您不会使用全局变量来管理它,并且在进行此调整后可能不必这样做。您应该使用从列表中获取的数据传递它,类似于您现在在itemtap
处理程序中设置TID
的方式。