Sencha touch 2 双视图推送修复与动态加载视图断开

Sencha touch 2 双视图推送修复与动态加载视图断开,sencha-touch-2,push,Sencha Touch 2,Push,我正在使用ST2.2,并应用了一个修复程序,当用户点击按钮、列表项等两次时,会导致两个视图被按下。以下是修复方法: Ext.define('MyApp.view.NavView', { extend: 'Ext.navigation.View', push: function (view) { if(this.getActiveItem().xtype != view.xtype) this.callParent(arguments); e

我正在使用ST2.2,并应用了一个修复程序,当用户点击按钮、列表项等两次时,会导致两个视图被按下。以下是修复方法:

Ext.define('MyApp.view.NavView', {
   extend: 'Ext.navigation.View',

   push: function (view) {
      if(this.getActiveItem().xtype != view.xtype)
         this.callParent(arguments);
      else
         console.warn("Prevented pushing a potentially duplicate view of xtype: " + view.xtype);
   }
});
当我在app.js中声明了所有在发布时初始化的视图时,这非常有效。从那时起,为了提高性能和减少DOM大小,我将所有视图切换为动态加载。换句话说,app.js中的视图中只包含主视图。根据需要初始化和推送其他视图

上面的修复不再有效,我又回到了原来的问题


我还尝试将MyApp.view.NavView包含到app.js中的应用程序的requires:,但没有成功。

您可以添加mutex on按钮以防止双击处理程序:

//somewhere in controller
tapNextButton: function(btn)
{
    if (btn.mutex) return;
    btn.mutex = true;
    setTimeout(function() {btn.mutex = false;}, TAP_BUFFER_LONG);
            // push new screen here
},
或者,您也可以在按钮定义中为点击侦听器使用“缓冲区”属性 或者覆盖:“Ext.event.recognizer.SingleTouch”整个项目