Javascript SenchaTouch2:如何确定是否因为实际显示视图而触发show事件

Javascript SenchaTouch2:如何确定是否因为实际显示视图而触发show事件,javascript,sencha-touch-2,Javascript,Sencha Touch 2,在sencha touch 2Ext.navigation.View中,可以推送()和弹出()其他视图。其他视图触发事件,如hide和show 初始化 隐藏 激活 展示 像这样弹出时: 停用 隐藏 展示 除去 毁灭 因此,依靠show或hide事件并不是最好的办法,因为在这两种情况下都会被解雇。 我认为这是一个错误,类似的事情已经发生了。尽管如此,我使用的版本(ST 2.0.1.1)中仍然存在这种行为,根据论坛中@rdougan的解释: 这背后的原因是,当一个项目是从卡删除 布局,它实际上可能显

在sencha touch 2
Ext.navigation.View
中,可以
推送()
弹出()
其他视图。其他视图触发事件,如
hide
show

  • 初始化
  • 隐藏
  • 激活
  • 展示
  • 像这样弹出时:

  • 停用
  • 隐藏
  • 展示
  • 除去
  • 毁灭
  • 因此,依靠
    show
    hide
    事件并不是最好的办法,因为在这两种情况下都会被解雇。
    我认为这是一个错误,类似的事情已经发生了。尽管如此,我使用的版本(ST 2.0.1.1)中仍然存在这种行为,根据论坛中@rdougan的解释:

    这背后的原因是,当一个项目是从卡删除 布局,它实际上可能显示在其他地方-或者可能是 正在更改为可浮动。因此,我们必须将该项目恢复到其原始状态 原始可见状态


    它也不会改变。所以我试图找出哪个事件是真正发生的。

    这个问题有一个解决方案。假设有人监听视图中的事件,而不是控制器,则可以使用以下小片段:

    Ext.Array.contains(this.up('navigationview').getActiveItem().getXTypes().split('/'), this.xtype)
    

    检查视图是否实际显示(
    true
    )或隐藏(
    false
    )。当然,您必须在要使用的视图上定义自己的配置属性,以使其正常工作。在我的例子中,它是一个
    Ext.Panel

    这个问题有一个解决方案。假设有人监听视图中的事件,而不是控制器,则可以使用以下小片段:

    Ext.Array.contains(this.up('navigationview').getActiveItem().getXTypes().split('/'), this.xtype)
    

    检查视图是否实际显示(
    true
    )或隐藏(
    false
    )。当然,您必须在要使用的视图上定义自己的配置属性,以使其正常工作。在我的例子中,它是一个
    Ext.Panel

    比较实例是否有问题?e、 g.:this.up('navigationview')。getActiveItem()==这在比较实例时有问题吗?e、 g.:this.up('navigationview')。getActiveItem()==this