煎茶触摸 2 全局变量未定义



我正在学习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',
    }
},
....

这就是问题所在。这。TIDTID 在我的浏览器的网络流量中检查时都返回未定义

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的方式。

相关内容

  • 没有找到相关文章