在android本机构建应用程序之后列表不显示

时间:2014-03-17 15:18:36

标签: sencha-touch sencha-touch-2

我有Ext.dataview.List,我成功地可以在浏览器中看到它。但是在buildind之后我的android列表应用程序和它的标题并没有显示出来。我尝试了几乎所有东西,但noghing有帮助。

这是我的代码:

MenuTabPanel.js:

Ext.define('App.view.MenuTabPanel', {
extend: 'Ext.tab.Panel',
xtype: 'menutb',
requires: [
    'Ext.TitleBar',
    'Ext.dataview.List'
],
config: {
    tabBarPosition: 'bottom',
    fullscreen : true,
    id: 'menuTabPanel',
    //layout: 'fit',

     listeners: {
            painted : function(element, eOpts) {
                        if(this.getActiveItem()) {
                            var title = this.getActiveItem().child('[xtype=list]').title;
                            var navBar = Ext.getCmp('navMenu').getNavigationBar();
                            navBar.setTitle(title);
                        }   
                    } 
     } 
},

initialize: function() {                
    var content = [];
    //var menuStore = Ext.getStore('menuItemsStore');
    var menuStore = Ext.create('App.store.MenuItemsStore'); 

    var onMenuItemClicked = function(list, index, node,record){
        var navigateTo = Ext.create('App.view.' + record.get('Id') + 'View');
        var navMenu = Ext.getCmp('navMenu');
        navMenu.push(navigateTo);
    };
    var tabPanel = this;
     var onStoreLoad = function(){
        menuStore.filter("Level",1);
        menuStore.each(function(record) {
            var tabItem = {};
            var items = {};
            tabItem['iconCls'] = record.get('Id');
            tabItem['layout'] = 'fit';

            items['id'] = record.get('Id');
            items['title'] = record.get('Title');
            items['xtype'] = 'list';
            items['height'] = '100%';
            items['width'] = '100%';
            //items['layout'] = 'vbox';
            //items['flex'] = 1;
            items['itemTpl'] = '<div class="menuitem-text"><img src="../resources/icons/{Id}.png" /> {Title}</div>';
            //items['store'] = Ext.getStore('menuItemsStore');
            var listen = {};
            listen['itemtap'] = onMenuItemClicked;
            items['listeners'] = listen;
            tabItem['items'] = [items]; 
            content.push(tabItem);
        }
        ); 
        tabPanel.add(content);
        }

    menuStore.load(onStoreLoad);
    this.callParent(arguments);
}

});

MenuController.js:

Ext.define('App.controller.MenuController', {

extend: 'Ext.app.Controller',

requires: [
    'Ext.dataview.List'
],

config: {
    control: {
        "menutb": {
            activeitemchange: 'onTabPanelActiveItemChange'
        }
    }
},


onTabPanelActiveItemChange: function(othis, value, oldValue, eOpts) {
    var list = value.child('[xtype=list]');
        var mainStore = Ext.getStore('menuItemsStore');
    var results = mainStore.queryBy(function(rec){
        if(rec.get('Level') == 2 && rec.get('Parent') == list.title)
            return true;
    }); 
    var data1  = Ext.Array.pluck(results.getRange(), 'data');
    list.setStore({
        model: 'Mobile.model.MenuItem',
        data: data1 
    });
    var navBar = othis.getParent().getNavigationBar();
    navBar.setTitle(list.title);
}   

});

MenuView.js:

Ext.define('App.view.MenuView', {
extend: 'Ext.NavigationView',
xtype: 'menu',
requires: [
    'Ext.TitleBar',
    'Ext.dataview.List',
    'App.view.MenuTabPanel'
],
config: {
    id: 'navMenu',

    items: [{
        xtype: 'menutb'
    }
    ]

}
});

我的应用程序从MenuView.js开始。 我做错了什么或我错过了什么?或者也许这是带有列表的android的问题?

编辑:

我发现activeitemchange事件存在一些问题,它在初始化后触发。当我评论这个事件列表时,通常会在android上显示。此外,当我不加载存储并手动编写数据时,事件会正常触发。

0 个答案:

没有答案