<Page actionBarHidden="true" @loaded="pageLoaded" @unloaded="pageUnloaded">
<DockLayout>
<DockLayout v-show="search">
...
</DockLayout>
<DockLayout class="routeDetails" v-show="!search">
...
</DockLayout>
</DockLayout>
</Page>
pageLoaded: function () {
// We only want to register the event in Android
if (application.android) {
console.log("halllo");
application.android.on(application.AndroidApplication.activityBackPressedEvent, this.backEvent);
}
},
pageUnloaded: function () {
// We only want to un-register the event on Android
if (application.android) {
console.log("done");
application.android.off(application.AndroidApplication.activityBackPressedEvent, this.backEvent);
}
},
backEvent: function (args) {
console.log("hey I pressed");
if (this.search) {
args.cancel = true;
this.search = false;
} else {
args.cancel = false;
}
}
search
является стандартным false
.
Проблема
Это когда я нахожусь на show
просмотре, где search = true
. Я хочу снова нажать аппаратную кнопку Android. Он должен быть скрыт и показать другой, где search = false
. Но это происходит только после того, как я нажимаю аппаратную кнопку Android 2 раза подряд.
Но когда я нахожусь в представлении, где search = false
, он регистрирует console.log
после первого нажатия аппаратной кнопки Android.
Код, который я нашел в этом сообщении в блоге. упоминается в этом выпуске Github
Обновлять
Итак, что вам нужно сделать, это нажать на одну из кнопок на экране. Затем используйте аппаратную кнопку, чтобы вернуться. В этом примере он сделает это напрямую. Но когда вы попытаетесь сделать это во второй раз, вам нужно будет дважды нажать аппаратную кнопку, прежде чем она сработает. В моем случае мне всегда нужно нажимать 2 раза, прежде чем это сработает.