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'}, 

问候,

+0

即使我认为这是id问题!此代码执行Ext.Viewport.add({xtype:'mainview'});确实使用相同的ID创建更多和更多的视图。我相信这位经理人总是在第一个工作。 – igrek 2012-05-15 14:15:22

煎茶的例子推荐使用上的按键动作的配置,如“取消”,“GOHOME”,“createPost”等。其有点有道理。
所有的裁判都是这样形式的:myContainer按钮[action = myAction]