我正在学习Sencha Touch 2,我需要一个全局变量。我使用以下代码在app.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);
},
....
console.log代码返回以下输出:
Confirming TID: 10
Confirming TID: 7
我正在尝试在商店中使用此TID值来使用以下代码从远程服务器过滤内容:
....
proxy: {
type: 'ajax',
url: 'http://myserver/sections/content/'+this.TID,
reader: {
type: 'json',
rootProperty: 'JSON',
}
},
....
这就是问题所在。在我的浏览器的网络流量中检查时, this.TID 或 TID 都会返回未定义。
答案 0 :(得分:0)
在创建类本身时设置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);
}
但是,理想情况下,您不会使用全局变量来管理它,并且在进行此调整后您可能不必这样做。您应该使用从列表中获取的数据传递它,类似于您现在在TID
处理程序中设置itemtap
的方式。