点击列表项只能工作一次

时间:2014-12-27 08:58:27

标签: extjs sencha-touch sencha-touch-2 sencha-architect sencha-touch-2.1

我有主页和菜单。在菜单中,我可以选择"玩家",在那里我可以看到所有团队成员的列表,点击每个玩家并查看更多详细信息。一切正常,直到我回到主页并再次回到"玩家"部分,然后点击播放器不再有效,即使控制台没有显示任何错误。

我一直试图解决这个问题太久了,所以我需要你的帮助。

"玩家"或用户控制器代码:

Ext.define('HockeyTeamManagementSystem.controller.Users', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        Users: 'users',
        UserInformationTab: '#UserInformationTab',
        AddUserButton: '#AddUser',
        BackToMenuButton: '#BackToMenu'
    },

    control: {
        "userlist": {
            itemtap: 'onListItemTap'
        },
        "Users": {
            backButtonCommand: 'backButtonCommand',
            BackToMenuCommand: 'backToMenuCommand'
        }
    }
},

onListItemTap: function(dataview, index, target, record, e, eOpts) {
    var user = Ext.create("HockeyTeamManagementSystem.view.UserDetailTabs", {
        title: record.data.name +" "+ record.data.lastname,
        record: record
    });
    this.getUsers().push(user);
    this.getUserInformationTab().setData(record.data);
    this.getAddUserButton().hide();
    this.getBackToMenuButton().hide();
},

backButtonCommand: function() {
    this.getAddUserButton().show();
    this.getBackToMenuButton().show();
},

backToMenuCommand: function() {
    var Dashboard = Ext.create('HockeyTeamManagementSystem.view.Dashboard');
    Ext.Viewport.setActiveItem(Dashboard);
}
});

2 个答案:

答案 0 :(得分:1)

我要面对同样的问题,你能告诉我"用户列表"引用映射,因为它不包含在当前控制器中。我希望,问题可能是因为"嵌套组件"。

答案 1 :(得分:1)

查看代码似乎,

每当你点击列表时,新实例都会被创建,所以关键是itemtap只附加了第一个视图实例,以了解更多有关此内容的信息,请参阅组件生命周期。

使用Ext.ComponentQuery.query()选择器来检查已创建的视图实例数,或者只是检查浏览器的开发人员工具。

如果你想在每次销毁它时创建一个视图,那么先创建。

它应该解决问题

始终有良好的做法将视图添加到相应的控制器,而不是在应用程序级别添加,它应该减少应用程序的加载时间。