html5手机网站案例,做照片用的视频模板下载网站,河北省建设银行网站,网站建设财务处理文章目录 一、路由二、页面调用接口二、路由跳转1.uni.navigateTo(OBJECT)2.uni.redirectTo(OBJECT)3.uni.reLaunch(OBJECT)4.uni.switchTab(OBJECT)5.uni.navigateBack(OBJECT) 总结 一、路由
路由配置 uni-app页面路由为框架统一管理#xff0c;开发者需要在pages.json里配… 文章目录 一、路由二、页面调用接口二、路由跳转1.uni.navigateTo(OBJECT)2.uni.redirectTo(OBJECT)3.uni.reLaunch(OBJECT)4.uni.switchTab(OBJECT)5.uni.navigateBack(OBJECT) 总结 一、路由
路由配置 uni-app页面路由为框架统一管理开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同。路由跳转 uni-app 有两种页面路由跳转方式
使用 navigator组件跳转标签式导航调用 API跳转编程式导航) 注 页面返回时会自动关闭 loading 及 toast, modal 及 actionSheet 不会自动关闭。页面关闭时只是销毁了页面实例未完成的网络请求、计时器等副作用需开发者自行处理。 页面栈 框架以栈的形式管理当前所有页面当发生路由切换的时候页面栈的表现如下
路由方式页面栈表现触发时机初始化新页面入栈uni-app 打开的第一个页面打开新页面新页面入栈调用 API uni.navigateTo 、使用组件 navigator open-typenavigate/页面重定向当前页面出栈新页面入栈调用 API uni.redirectTo 、使用组件 navigator open-typeredirectTo/页面返回页面不断出栈直到目标返回页调用 API uni.navigateBack 、使用组件 navigator open-typenavigateBack/ 、用户按左上角返回按钮、安卓用户点击物理back按键Tab 切换页面全部出栈只留下新的 Tab 页面调用 API uni.switchTab 、使用组件 navigator open-typeswitchTab/ 、用户切换 Tab重加载页面全部出栈只留下新的页面调用 API uni.reLaunch 、使用组件 navigator open-typereLaunch/
二、页面调用接口
getApp() getApp() 函数用于获取当前应用实例一般用于获取globalData。也可通过应用实例调用 App.vue methods 中定义的方法。
// app.vue页面
methods: {doSomething() {console.log(doSomething)}
}
// 组价页面
mounted() {const app getApp()console.log(app.globalData)app.doSomething() // 调用
}注 不要在定义于 App() 内的函数中或调用 App 前调用 getApp() 可以通过 this.$scope 获取对应的app实例通过 getApp() 获取实例之后不要私自调用生命周期函数。当在首页nvue中使用getApp()不一定可以获取真正的App对象。对此提供了const app getApp({allowDefault: true})用来获取原始的App对象可以用来在首页对globalData等初始化 getCurrentPages() getCurrentPages() 函数用于获取当前页面栈的实例以数组形式按栈的顺序给出数组中的元素为页面实例第一个元素为首页最后一个元素为当前页面。
方法描述平台说明page.$getAppWebview()获取当前页面的webview对象实例Apppage.$vm当前页面的 Vue 实例page.route获取当前页面的路由 注意 getCurrentPages() 仅用于展示页面栈的情况请勿修改页面栈以免造成页面状态错误。 页面关闭时对应页面实例会在页面栈中删除。navigateTo, redirectTo 只能打开非 tabBar 页面。switchTab 只能打开 tabBar 页面。reLaunch 可以打开任意页面。页面底部的 tabBar 由页面决定即只要是定义为 tabBar 的页面底部都有 tabBar。不能在首页 onReady 之前进行页面跳转。 $getAppWebview() uni-app 在 getCurrentPages()获得的页面里内置了一个方法 $getAppWebview() 可以得到当前webview的对象实例从而实现对 webview 更强大的控制。在 html5Plus 中plus.webview具有强大的控制能力 但uni-app框架有自己的窗口管理机制请不要自己创建和销毁webview如有需求覆盖子窗体上去请使用原生子窗体subNvue。 注意此方法仅 App 支持 export default {data() {return {title: Hello}},onLoad() {// #ifdef APP-PLUSconst currentWebview this.$scope.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效currentWebview.setBounce({position:{top:100px},changeoffset:{top:0px}}); //动态重设bounce效果// #endif}}获取指定页面 webview 的对象实例 getCurrentPages()可以得到所有页面对象然后根据数组可以取指定的页面webview对象 var pages getCurrentPages();
var page pages[pages.length - 1];
// #ifdef APP-PLUS
var currentWebview page.$getAppWebview();
console.log(currentWebview.id);//获得当前webview的id
console.log(currentWebview.isVisible());//查询当前webview是否可见
);
// #endifuni-app自带的web-view组件是页面中新插入的一个子webview。获取该对象的方法见https://ask.dcloud.net.cn/article/35036
二、路由跳转
1.uni.navigateTo(OBJECT)
保留当前页面跳转到应用内的某个页面使用uni.navigateBack可以返回到原页面。
参数类型必填默认值说明平台差异说明urlString是需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔参数键与参数值用相连不同参数用分隔如 ‘path?keyvaluekey2value2’path为下一个页面的路径下一个页面的onLoad函数可得到传递的参数animationTypeString否pop-in窗口显示的动画效果AppanimationDurationNumber否300窗口动画持续时间单位为 msAppeventsObject否页面间通信接口用于监听被打开页面发送到当前页面的数据。2.8.9 开始支持。successFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数调用成功、失败都会执行
//在起始页面跳转到test.vue页面并传递参数
uni.navigateTo({url: test?id1nameuniapp
});// 在test.vue页面接受参数
export default {onLoad: function (option) { //option为object类型会序列化上个页面传递的参数console.log(option.id); //打印出上个页面传递的参数。console.log(option.name); //打印出上个页面传递的参数。}
}// 在起始页面跳转到test.vue页面并监听test.vue发送过来的事件数据
uni.navigateTo({url: /pages/test?id1,events: {// 为指定事件添加一个监听器获取被打开页面传送到当前页面的数据acceptDataFromOpenedPage: function(data) {console.log(data)},someEvent: function(data) {console.log(data)}...},success: function(res) {// 通过eventChannel向被打开页面传送数据res.eventChannel.emit(acceptDataFromOpenerPage, { data: data from starter page })}
})// 在test.vue页面向起始页通过事件传递数据
onLoad: function(option) {const eventChannel this.getOpenerEventChannel();eventChannel.emit(acceptDataFromOpenedPage, {data: data from test page});eventChannel.emit(someEvent, {data: data from test page for someEvent});// 监听acceptDataFromOpenerPage事件获取上一页面通过eventChannel传送到当前页面的数据eventChannel.on(acceptDataFromOpenerPage, function(data) {console.log(data)})
}vue3.0 script setup 语法糖中调用 getOpenerEventChannel 示例
script setupimport {onMounted,getCurrentInstance} from vue;onMounted(() {const instance getCurrentInstance().proxyconst eventChannel instance.getOpenerEventChannel();eventChannel.emit(acceptDataFromOpenedPage, {data: data from test page});eventChannel.emit(someEvent, {data: data from test page for someEvent});eventChannel.on(acceptDataFromOpenerPage, function(data) {console.log(acceptDataFromOpenerPage, data)})})
/scripturl有长度限制太长的字符串会传递失败可改用页面通信、全局变量另外参数中出现空格等特殊字符时需要对参数进行编码如下为使用encodeURIComponent对参数进行编码的示例。
navigator :url/pages/test/test?item encodeURIComponent(JSON.stringify(item))/navigator// 在test.vue页面接受参数
onLoad: function (option) {const item JSON.parse(decodeURIComponent(option.item));
}注意 页面跳转路径有层级限制不能无限制跳转新页面跳转到 tabBar 页面只能使用 switchTab 跳转路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url 在App平台可以使用 plus.runtime.openURL或web-view组件 H5平台使用 window.open 小程序平台使用web-view组件url需在小程序的联网白名单中。 在hello uni-app中有个组件ulink.vue已对多端进行封装可参考。 2.uni.redirectTo(OBJECT)
关闭当前页面跳转到应用内的某个页面。
参数类型必填说明urlString是需要跳转的应用内非 tabBar 的页面的路径路径后可以带参数。参数与路径之间使用?分隔参数键与参数值用相连不同参数用分隔如 ‘path?keyvaluekey2value2’successFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数调用成功、失败都会执行
uni.redirectTo({url: /pages/test?id1
});注意 跳转到 tabBar 页面只能使用 switchTab 跳转 3.uni.reLaunch(OBJECT)
关闭所有页面打开到应用内的某个页面。 注意 如果调用了 uni.preloadPage(OBJECT) 不会关闭仅触发生命周期 onHideH5端调用uni.reLaunch之后之前页面栈会销毁但是无法清空浏览器之前的历史记录 此时navigateBack不能返回 如果存在历史记录的话点击浏览器的返回按钮或者调用history.back()仍然可以导航到浏览器的其他历史记录。 参数类型必填说明urlString是需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔参数键与参数值用相连不同参数用分隔如 ‘path?keyvaluekey2value2’如果跳转的页面路径是 tabBar 页面则不能带参数successFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数调用成功、失败都会执行
uni.reLaunch({url: /pages/test?id1
})export default {onLoad: function (option) {console.log(option.id);}
}4.uni.switchTab(OBJECT)
跳转到 tabBar 页面并关闭其他所有非 tabBar 页面。 注意 如果调用了 uni.preloadPage(OBJECT) 不会关闭仅触发生命周期 onHide 参数类型必填说明urlString是需要跳转的 tabBar 页面的路径需在 pages.json 的 tabBar 字段定义的页面路径后不能带参数successFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数调用成功、失败都会执行
// page.json
{tabBar: {list: [{pagePath: pages/index/index,text: 首页},{pagePath: pages/other/other,text: 其他}]}
}// other.vue
uni.switchTab({url: /pages/index/index
});5.uni.navigateBack(OBJECT)
关闭当前页面返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈决定需要返回几层。
参数类型必填默认值说明平台差异说明deltaNumber否1返回的页面数如果 delta 大于现有页面数则返回到首页。animationTypeString否pop-out窗口关闭的动画效果AppanimationDurationNumber否300窗口关闭动画的持续时间单位为 ms果AppsuccessFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数调用成功、失败都会执行
// 注意调用 navigateTo 跳转时调用该方法的页面会被加入堆栈而 redirectTo 方法则不会。见下方示例代码
// 此处是A页面
uni.navigateTo({url: B?id1
});
// 此处是B页面
uni.navigateTo({url: C?id1
});
// 在C页面内 navigateBack将返回A页面
uni.navigateBack({delta: 2
});总结
页面跳转方式总结
navigateTo 保留当前页面跳转到应用内的某个页面使用uni.navigateBack 可以返回到原页面redirectTo 关闭当前页面跳转到应用内的某个页面switchTab 跳转到tabBar页面同时关闭其他非tabBar页面navigateBack 返回上一页面reLanch 关闭所有页面打开到应用内的某个页面 页面栈的关系navigateTo 新页面入栈redirectTo 当前页面出栈新页面出栈switchTab 页面全部出栈只留下新的Tab页面navigateBack 页面不断出栈知道目标返回页新页面入栈reLanch 页面全部出栈只留下新的页面