Sencha Touch 2按钮松动听众
问题描述:
我在Sencha Touch 2项目中有一个按钮。 该按钮在被按下后被视图破坏,并在按下另一个按钮后重建。Sencha Touch 2按钮松动听众
但是该按钮不能再次获取侦听器。
监听器内置在视图的控制器中。
Ext.application({
name: 'App',
controllers: ['Main','Home'],
views: ['Main','Home'],
launch: function() {Ext.Viewport.add({xtype:'mainview'});}
});
控制器
Ext.define('App.controller.Home', {extend: 'Ext.app.Controller',
config: {
refs: {homeView: '#homeview',backBtn: '#btn_test1'},
control: {
backBtn: {
tap: function(backBtn){
console.log('[Controller][Home] btn monatsrate - - tap');
Ext.Viewport.add({xtype: 'mainview'});
Ext.Viewport.setActiveItem(1);
}
},
homeView: {
deactivate: function (homeView){
console.log('[Controller][Home] autodestroy homeview');
//homeView.destroy();
Ext.Viewport.remove(homeView);
}
}
}
},
});
和视图
Ext.define("App.view.Main", {
extend:"Ext.Container",
xtype:"mainview",
config:{
id:'mainview',
items:[
{
xtype:'button',
id:'btn_test2',
text: 'test2'
}
]
},
});
任何想法如何让按钮让听众回来?
答
这是因为您的控制器中的“ref”正在使用按钮的ID来创建参考。相反,为您的按钮使用不同的选择器。例如,你可以给你的按钮一个“名称”属性,并给它一个“testbutton”的值。在整个应用程序的流量那么你的裁判会像
refs: {homeView: '#homeview',backBtn: 'button[name=testbutton]'},
我与创建的按钮和列表项同样的问题挣扎/摧毁了许多倍。从那以后,我读了几次,一般来说,Sencha Touch团队建议不要使用id作为选择器,除非您有特定的理由。上面的“名称”方法对我来说效果很好。你也可以使用很多其他的CSS样式选择器(你必须单独阅读)。
正如前面的评论中提到的,我会接受一些答案,以增加将来回答您的问题的可能性。我只是回答了这个问题,因为我在这个问题上对我的头撞了4个小时。
答
我相信你的问题正是id参数。如果你添加了任何id,你应该确保它是唯一的,因此添加一个id到你的自定义视图的配置将导致无法创建它的更多然后一个实例!我可能不是100%的权利(可能在一个容器内,但我认为它会导致问题),但为什么你会想要一个id很多?此外,你可以简单地通过的xtype引用您的看法:
refs: {homeView: 'homeview',backBtn: 'btn_test1'},
问候,
答
煎茶的例子推荐使用上的按键动作的配置,如“取消”,“GOHOME”,“createPost”等。其有点有道理。
所有的裁判都是这样形式的:myContainer按钮[action = myAction]
即使我认为这是id问题!此代码执行Ext.Viewport.add({xtype:'mainview'});确实使用相同的ID创建更多和更多的视图。我相信这位经理人总是在第一个工作。 – igrek 2012-05-15 14:15:22