Sencha Touch:快速单击按钮将推动视图两次

Alo*_*mir 3 extjs sencha-touch sencha-touch-2

假设我有一个触发推送新视图的按钮.我注意到,如果我不止一次点击它,足够快,它将推动相同的视图两次.

你可以使用他们在这个页面上的官方文档模仿这种行为,他们有一个实时样本:http: //docs.sencha.com/touch/2-0/#!/guide/navigation_view

明确的问题是,如何预防呢?

jay*_*jee 8

另一种方法是检查活动视图是什么,只有当它与您要推送的视图不同时才推送.我已经测试了这个并且它有效.

例如

if (this.getNavigationView().getActiveItem().xtype != "someView") {
    this.getNavigationView().push({ xtype: "someView" });
}
Run Code Online (Sandbox Code Playgroud)


Mer*_*ott 6

扩展jayteejee的答案,我在自定义导航视图中覆盖了push方法,如下所示:

Ext.define('BT.navigation.View', {
   extend: 'Ext.navigation.View',
   xtype: 'btnavigationview',

   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);
   }
});
Run Code Online (Sandbox Code Playgroud)

我不完全确定xtype假设是否足够安全,但我无法想到当前应用程序中的任何情况需要一个视图将同一类型的另一个视图推送到导航堆栈.所以,解决方案对我有用,而且非常简洁.警告是为了让我后来头痛,并可能拉我的头发试图弄清楚为什么push不起作用!