0

我正在使用 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 中的应用程序但没有成功。

4

1 回答 1

0

您可以在按钮上添加互斥锁以防止双击处理程序:

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

或者您可以在按钮定义中使用“buffer”属性作为点击侦听器或覆盖:'Ext.event.recognizer.SingleTouch'整个项目

于 2014-04-04T13:34:24.723 回答