SenchaTouch2: Как определить, было ли запущено событие show, потому что представление действительно отображается
В сенсорном Сенча 2 Ext.navigation.View
можно push()
а также pop()
другие взгляды внутри и снаружи. Эти другие виды пожара события, такие как hide
а также show
Во-первых, эти события запускаются в следующем порядке при нажатии: (обратите внимание на жирные)
- инициализировать
- скрывать
- активировать
- шоу
и вот так при совании:
- дезактивировать
- скрывать
- шоу
- Удалить
- уничтожить
Так что полагаясь либо на show
или же hide
Событие не лучшая идея, так как оба увольняются в обеих ситуациях.
Я считаю это ошибкой, и нечто подобное уже обсуждалось. Тем не менее, это поведение все еще присутствует в версии, которую я использую (ST 2.0.1.1) и в соответствии с объяснением @rdougan на форуме:
Причиной этого является то, что когда элемент удаляется из макета карты, он может фактически отображаться где-то еще - или, возможно, он меняется на плавающий. Поэтому мы должны вернуть элемент обратно в исходное видимое состояние.
это также не изменится. Поэтому я пытался выяснить, какое событие действительно происходит.
1 ответ
Есть решение этой проблемы. Предполагая, что вы слушаете событие внутри представления, а не контроллер, вы можете использовать этот маленький фрагмент:
Ext.Array.contains(this.up('navigationview').getActiveItem().getXTypes().split('/'), this.xtype)
проверить, действительно ли отображается ваш вид (true
) или скрытый (false
). Конечно, вы должны определить свой собственный xtype
Свойство config для представлений, которые вы используете для этой работы. В моем случае это Ext.Panel
,