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' } ] })
相關文章
- C#防止WebBrowser在新視窗中開啟連結頁面C#Web
- 設定頁面連結在新視窗開啟程式碼例項
- Javascript跳轉頁面和開啟新視窗等方法JavaScript
- 動態設定連線<a>元素新視窗頁面開啟
- vue 新視窗開啟外連結Vue
- 如何總是在新視窗中開啟資料夾?
- Windows Phone 中WebBrowser開啟新視窗WindowsWeb
- js開啟新視窗JS
- vue 內開啟一個新視窗,帶傳參!Vue
- js 開啟新視窗方式JS
- JavaScript中的Window物件(開啟新的視窗)JavaScript物件
- jQuery實現的在新視窗開啟連結jQuery
- window.open()開啟新視窗教程
- 基於vue3.0+electron新開視窗|Electron多開窗體|父子模態視窗Vue
- 使用C#開啟新視窗關閉舊視窗的方法;winform中防止重複開啟多個相同子窗體C#ORM
- Windows 8中如何設定在新選項卡中開啟視窗Windows
- 如何讓頁面跳出框架在一個新頁面開啟框架
- 在 vue-router 跳轉過程中保留頁面元件的值狀態Vue元件
- vue-router 在模組化 vue中的使用Vue
- 預設瀏覽器設定及vue自動開啟頁面瀏覽器Vue
- vue開啟新視窗並且實現傳參,有圖有真相Vue
- phpcms模板 外部連結在新視窗開啟怎麼設定PHP
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- 說說如何使用 vue-router 實現頁面跳轉Vue
- 在框架頁中彈出新視窗提供列印功能框架
- 點選按鈕在iframe子視窗載入指定頁面
- 拖拽防止火狐瀏覽器開啟新視窗瀏覽器
- 以post方式傳參方式開啟新視窗
- 在WPF中嵌入WebBrowser視覺化頁面Web視覺化
- 在ASP.NET開發中輕鬆讓網頁彈出視窗ASP.NET網頁
- vue-router命名檢視Vue
- 模式視窗頁面不更新的問題模式
- js開啟沒有位址列下拉條新視窗JS
- 在html頁面中判斷本地app是否安裝並開啟HTMLAPP
- 混合APP開發的套路(四):在html頁面中開啟專案中的ActivityAPPHTML
- iframe裡面的頁面呼叫父視窗,左右視窗js函式的方法JS函式
- vue-router 啟用 history 模式下的開發及非根目錄部署Vue模式
- 京東在html5頁面中開啟本地app的解決方案HTMLAPP