使用动态加载视图打破双视图推送修复

时间:2013-06-09 00:06:42

标签: 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);
      else
         console.warn("Prevented pushing a potentially duplicate view of xtype: " + view.xtype);
   }
});

当我在app.js中声明了所有在启动时初始化的视图时,这非常有用。从那时起,为了提高性能并减少DOM大小,我已将所有视图切换为动态加载。另一个词,只有主视图不包含在app.js的视图中。其他视图将根据需要进行初始化和推送。

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

我还尝试将MyApp.view.NavView包含在内,要求:app.js中的应用程序没有成功。

1 个答案:

答案 0 :(得分: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”属性作为tap监听器 或覆盖:'Ext.event.recognizer.SingleTouch'整个项目