Vue中在新視窗開啟頁面 及 Vue-router
背景
在開發提分加專案的過程中,遇到了點選下拉選單時在新視窗中開啟頁面,由於之前一直做的是單頁面應用,沒有碰到過類似的需求,於是上網搜了一下解決辦法,也再次系統地溫習了一下vue-router
。
解決
使用路由物件的resolve方法解析路由,可以得到location、router、href等目標路由的資訊。得到href就可以使用window.open開新視窗了。
const {href} = this.$router.resolve({
name: "statistics-explain",
params: {
classID: id,
examSubjectID: this.planClassData.examSubjectID,
studentStatus: 0
}
});
window.open(href, '_blank');
延伸
參考文章:Vue Router
動態路由匹配:一個“路徑引數”使用冒號
:
標記。當匹配到一個路由時,引數值會被設定到this.$route.params
,可以在每個元件內使用。巢狀路由:要在巢狀的出口中渲染元件,需要在
VueRouter
的引數中使用children
配置,要注意,以 / 開頭的巢狀路徑會被當作根路徑。 這讓你充分的使用巢狀元件而無須設定巢狀的路徑。export default { path: '/scoreplus', name: 'scoreplus', component: { template: '<router-view />' }, redirect: { name: 'scoreplus-index' }, children: [ { // 檢視個人方案 path: 'preview/:examSubjectID/:xuexinID/:recordsID/:constitute/:planID', name: 'score-preview', meta: { text: '個人方案' }, component: ScorePreview }, { // 檢視方案內容 path: 'planList/:planID', name: 'score-plan-list', meta: { text: '檢視方案內容' }, component: ScorePlanList }, { // 下載方案內容 path: 'download/:planID/:classID', name: 'score-download-list', meta: { text: '下載方案內容' }, component: DownloadList }, { // 檢視推送試題 path: 'push/:planID/:level', name: 'score-question-push', meta: { text: '檢視推送試題' }, component: QuestionPush }, { // 提分方案首頁 path: '', name: 'scoreplus-index', component: ScoreIndex } ] }
程式設計式導航
router.push(location, onComplete?, onAbort?)
:想要導航到不同的 URL,則使用router.push
方法。這個方法會向 history 棧新增一個新的記錄,所以,當使用者點選瀏覽器後退按鈕時,則回到之前的 URL。// 字串 router.push('home') // 物件 router.push({ path: 'home' }) // 命名的路由 router.push({ name: 'user', params: { userId: 123 }}) // 帶查詢引數,變成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }})
在 2.2.0+,可選的在
router.push
或router.replace
中提供onComplete
和onAbort
回撥作為第二個和第三個引數。這些回撥將會在導航成功完成 (在所有的非同步鉤子被解析之後) 或終止 (導航到相同的路由、或在當前導航完成之前導航到另一個不同的路由) 的時候進行相應的呼叫。router.replace(location, onComplete?, onAbort?)
:跟router.push
很像,唯一的不同就是,它不會向 history 新增新記錄,而是跟它的方法名一樣 —— 替換掉當前的 history 記錄。router.go(n)
:這個方法的引數是一個整數,意思是在 history 記錄中向前或者後退多少步,類似window.history.go(n)
。
命名路由:可以在建立 Router 例項的時候,在
routes
配置中給某個路由設定名稱。要連結到一個命名路由,可以給router-link
的to
屬性傳一個物件。<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link> router.push({ name: 'user', params: { userId: 123 }})
重定向和別名
重定向(redirect):
const router = new VueRouter({ routes: [ { path: '/a', redirect: '/b' } ] })
別名:/a 的別名是 /b,意味著,當使用者訪問 /b 時,URL 會保持為 /b,但是路由匹配則為 /a,就像使用者訪問 /a 一樣。
const router = new VueRouter({ routes: [ { path: '/a', component: A, alias: '/b' } ] })
相關文章
- vue 新視窗開啟外連結Vue
- vue 內開啟一個新視窗,帶傳參!Vue
- 滑鼠拖動圖片,禁止在新視窗中開啟圖片
- js 開啟新視窗方式JS
- 在新視窗開啟連結的方法是什麼?那怎麼設定全站連結都在新視窗開啟?
- window.open()開啟新視窗教程
- 基於vue3.0+electron新開視窗|Electron多開窗體|父子模態視窗Vue
- phpcms模板 外部連結在新視窗開啟怎麼設定PHP
- vue開啟新視窗並且實現傳參,有圖有真相Vue
- 在 vue-router 跳轉過程中保留頁面元件的值狀態Vue元件
- 預設瀏覽器設定及vue自動開啟頁面瀏覽器Vue
- 拖拽防止火狐瀏覽器開啟新視窗瀏覽器
- 說說如何使用 vue-router 實現頁面跳轉Vue
- Markdown連結採用新開視窗的方式開啟
- vue-router命名檢視Vue
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- Android開發 - 使用自定義介面在新視窗中傳回資料Android
- 在WPF中嵌入WebBrowser視覺化頁面Web視覺化
- 切換電腦頁面、視窗快捷鍵
- vue-router 啟用 history 模式下的開發及非根目錄部署Vue模式
- day99:MoFang:Flask-JSONRPC提供RPC介面&在APP進行視窗頁面操作(視窗-幀-幀組)FlaskJSONRPCAPP
- 無法開啟JFrame視窗
- 瀏覽器攔截開啟新視窗情況總結瀏覽器
- PbootCMS模板導航設定外鏈時新視窗開啟boot
- vue · 使用vue-router設定每個頁面的titleVue
- 在SAP CRM WebClient UI裡開啟ABAP Webdynpro頁面WebclientUI
- JavaScript 點選頁面其他地方關閉視窗JavaScript
- vue--前端路由及vue-router兩種模式Vue前端路由模式
- 三種方法在當前目錄下開啟cmd命令視窗
- vue-router中scrollBehavior的妙用Vue
- vue-Router中name的使用Vue
- IDEA 開啟 services視窗 管理微服務Idea微服務
- Render函式在Vue多頁面應用中的應用函式Vue
- 使用Vue.js在WordPress中建立單頁面應用SPAVue.js
- 在VUE中改變陣列、物件。頁面沒有變化Vue陣列物件
- 在 JeecgBoot 專案中基於 Vue 3 配置多頁面入口bootVue
- vue-router無論是hash模式還是歷史模式在ios微信瀏覽器中進入哪個頁面複製連結或選擇safari開啟都是第一次進入的那個頁面Vue模式iOS瀏覽器
- DRF思維導圖(單獨新視窗開啟圖片可檢視大圖)