Vue-Router(三) 編程式導航
阿新 • • 發佈:2018-08-13
new 想要 ucc margin 編寫 war pre ons 使用
Vue-Router(三) 編程式導航 在 vue 中,我們除了使用 創建 a 標簽來定義導航鏈接之外,還可以使用 router 實例方法,通過編寫代碼的方式來實現 router.push(location) 想要導航到不容的 URL,我們可以使用創建多個 ,當然也可以使用 router.push() 方法。其實,點擊 就相當於調用 router.push() 聲明式 編程式 < router-link :to=”…”/> router.push(…) 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‘ }}) router.replace(location) 這個方法跟 push 很像,只不過他並不會像 history 中添加新的記錄,就像它的方法名稱一樣,replace 替換掉當前的 history 記錄 聲明式 編程式 < router-link :to=”…” replace> router.replace(…) router.go(n) 這個方法就是一個整數,意思就是在 history 中前進或者後退多少步,類似於window.history.go // 在瀏覽器記錄中前進一步,等同於 history.forward() router.go(1) // 後退一步記錄,等同於 history.back() router.go(-1) // 前進 3 步記錄 router.go(3) // 如果 history 記錄不夠用,那就默默地失敗唄 router.go(-100) router.go(100) 其實這幾個方法就跟 window.history 中的 window.history.pushState、 window.history.replaceState 和 window.history.go 很像,有興趣的小夥伴 可以去看一下 Browser History APIs 點這裏點這裏 介紹完了方法,我們就看一下項目中的實際應用吧 首先在 components 目錄下新建一個登錄界面和一個登錄成功界面,分別命名為login.vue和loginSuceess.vue 然後我們在驗證成功之後進入登錄成功界面,成功界面裏面有個註銷按鈕,註銷的時候先彈窗確認在退出到登錄界面 login.vue <template> <div class="hello"> <input type="text" v-model="loginName"><br> <input type="password" v-model="passWord"><br> <button @click="loginSub">登錄</button> </div> </template> <script type="text/ecmascript-6"> import ProsAndEmit from ‘./testPropsAndEmit‘ export default { name: ‘hello‘, data () { return { msg: ‘Welcome to Your Vue.js App‘, loginName: ‘‘, passWord: ‘‘ } }, methods: { loginSub () { console.log(‘登錄名:‘ + this.loginName + ‘,密碼:‘ + this.passWord) // 純數字 let number = /^.*[^\d].*$/ // 隨便驗證一下 if (this.loginName === ‘‘) { alert(‘請輸入登錄名‘) return } if (!number.test(this.loginName)) { alert(‘login Success!‘) // 驗證成功進入 loginSuccess this.$router.push(‘loginSuccess‘) } else { alert(‘登錄名為純數字!‘) } } }, components: { ProsAndEmit: ProsAndEmit } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 { font-weight: normal; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style> loginSuccess.vue <template> <div> <button @click="layOut">註銷</button> </div> </template> <script type="text/ecmascript-6"> export default { methods: { layOut () { alert(‘註銷成功!‘) // 註銷成功 返回登錄界面 this.$router.go(-1) console.log(123) } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> </style> 接下來我們來配置一下路由 // 導入組件 和 依賴 import Vue from ‘vue‘ import Router from ‘vue-router‘ import login from ‘@/components/login‘ import LoginSuccess from ‘@/components/loginSeccess‘ // 告訴 vue 你要使用 route Vue.use(Router) // 定義路由配置項並導出 export default new Router({ mode: ‘history‘, redirect: ‘goodslist‘, routes: [ { path: ‘/‘, name: ‘login‘, component: login }, { path: ‘/loginSuccess‘, name: ‘loginSuccess‘, component: LoginSuccess } ] }) 這樣路由就配置好了,現在我們來運行它,demo略簡陋,見諒 npm run dev
Vue-Router(三) 編程式導航