网站logo设计标准,学做网站要多久多少钱,怎么做一个企业网站,论基层门户网站的建设vue3有一些变化#xff0c;按照网上有些文章的方法#xff0c;发现行不通#xff0c;通过一段时间的打印、尝试后#xff0c;发现以下方法可行。
第一步#xff09;首先定义一个处理回退事件的js函数#xff0c;一定是vue.methods中的函数#xff0c;否则找不到this按照网上有些文章的方法发现行不通通过一段时间的打印、尝试后发现以下方法可行。
第一步首先定义一个处理回退事件的js函数一定是vue.methods中的函数否则找不到this或者找不到router其次在mounted事件中将它映射成全局js函数在此函数中判断是router.back还是退出Activity通过返回值告诉Activity。
const app Vue.createApp({ provide:{tags:tags, service:service}, created(){ this.$router.push(/home).catch(err {err}) },mounted() { window.sys_go_back this.sysGoBack;//声明全局函数在Activity中调用 },methods:{ sysGoBack() { //实现按回退按钮回退历史页面如果无历史则退出activity或应用 //注意这里有变化不能用this.$router.currentRoute.path if(this.$router.currentRoute.value.path/home) { return false; } this.$router.back(); return true; } } });
第二步在用了Webview的Activity中处理onBackPressed事件调用全局的sys_go_back函数如果返回true则不做什么事情否则执行Activity的回退。 Override public void onBackPressed () { LOG.debug(onBackPressed); if(webview null) { super.onBackPressed(); return; } //注意这里使用了CompletableFuture所以至少需要用java 8 //使用CompletableFuture可以解决很多Android中调用跟回调分离十万八千里的问题 jsGoBack().whenCompleteAsync((hasHistory, e) - { LOG.debug(sys_go_back return {}, hasHistory); if(hasHistory) { return; } runOnUiThread(super::onBackPressed); }); } /** * 先判断vue中是否有历史可回退如果有则执行vue的back并返回true否则直接返回false * return 是否存在可回退的历史页面 */ private CompletableFutureBoolean jsGoBack() { LOG.debug(Call vueGoBack); CompletableFutureBoolean result new CompletableFuture(); webview.evaluateJavascript(javascript:sys_go_back(), value - { LOG.debug(sys_go_back() return {}, value); result.complete(ValParser.parseBool(value, false)); }); return result; }