当前位置:   article > 正文

Vue学习(9)————————Vue路由,设置请求头,动态路由(路由传值,get传值)_前端this.$http请求头放哪

前端this.$http请求头放哪

简述

之前都是手动的网跟组件中引入其他组件(import),路由的作用就是让他自动挂载组件组成界面

 1.安装

 npm install vue-router  --save   / cnpm install vue-router  --save

2、引入并 Vue.use(VueRouter)   (main.js)
 
  import VueRouter from 'vue-router'

  Vue.use(VueRouter)

  1. //相当于引入一个工具库 并付给Vue引用
  2. import Vue from 'vue';
  3. import App from './App';
  4. import VueResource from 'vue-resource';
  5. import VueRouter from 'vue-router';
  6. //并使用插件
  7. Vue.use(VueResource);
  8. Vue.use(VueRouter);
  9. new Vue({
  10. el:'#app',
  11. render: h => h(App)
  12. })

3、配置路由

  1、创建组件 引入组件


  2、定义路由  (建议复制s)

   const routes = [
     { path: '/foo', component: Foo },
     { path: '/bar', component: Bar },
     { path: '*', redirect: '/home' }   /*默认跳转路由*/
   ]

  3、实例化VueRouter

   const router = new VueRouter({
     routes // (缩写)相当于 routes: routes
   })

  4、挂载

    
  new Vue({
    el: '#app',
    router,
    render: h => h(App)
  })
  
  5 、根组件的模板里面放上这句话   <router-view></router-view>        

  1. import Vue from 'vue';
  2. import App from './App.vue';
  3. import VueRouter from 'vue-router';
  4. Vue.use(VueRouter);
  5. //1.创建组件
  6. import Header from './components/Header.vue';
  7. import News from './components/News.vue';
  8. //2.配置路由 注意:名字
  9. const routes = [
  10. { path: '/header', component: Header },
  11. { path: '/news', component: News },
  12. { path: '*', redirect: '/home' } /*默认跳转路由*/
  13. ]
  14. //3.实例化VueRouter 注意:名字
  15. const router = new VueRouter({
  16. routes // (缩写)相当于 routes: routes
  17. })
  18. //4、挂载路由
  19. new Vue({
  20. el: '#app',
  21. router,
  22. render: h => h(App)
  23. })
  24. //5 <router-view></router-view> 放在 App.vue


  6、路由跳转
  <router-link to="/foo">Go to Foo</router-link>
   <router-link to="/bar">Go to Bar</router-link>

  1. <template>
  2. <div id="app">
  3. <router-link to="/header">头部</router-link>
  4. <router-link to="/news">新闻</router-link>
  5. <hr />
  6. <router-view></router-view>
  7. </div>
  8. </template>
  9. <script>
  10. </script>
  11. <style lang="scss">
  12. </style>

————————————————————————————————————————————————

设置请求头(添加参数)

第一种:在Vue实例中设置

  1. var vm = new Vue({
  2. el:'#rrapp',
  3. data:{
  4. showList: true,
  5. title: null
  6. },
  7. http: {
  8. root: '/',
  9. headers: {
  10. token: token
  11. }
  12. }
  13. })

第二种:全局设置请求头(Main.js)

Vue.http.headers.common['token'] = 'YXBpOnBhc3N3b3Jk';

第三种:在拦截器中设置

  1. Vue.http.interceptors.push((request, next) => {
  2.         request.headers.set('token', token); //setting request.headers
  3.         next((response) => {
  4.             return response
  5.      })
  6. })

————————————————————————————————————————————————————

动态路由(路由传值)

在main.js加入路由

  1. //相当于引入一个工具库 并付给Vue引用
  2. import Vue from 'vue';
  3. import App from './App';
  4. import VueResource from 'vue-resource';
  5. import VueRouter from 'vue-router';
  6. //并使用插件
  7. Vue.use(VueResource);
  8. Vue.use(VueRouter);
  9. Vue.http.headers.common['token'] = 'znjtbril';
  10. //1.创建组件
  11. import header from './components/Header.vue';
  12. import news from './components/News.vue';
  13. import content from './components/Content.vue';
  14. //2.配置路由
  15. const routes = [
  16. { path: '/header', component: header },
  17. { path: '/news', component: news },
  18. { path: '/content/:keyid', component: content }, /* 动态路由 (就是个传值) 重点在这*/
  19. { path: '*', redirect: '/header' } /*默认跳转路由*/
  20. ]
  21. //3.实例化VueRouter
  22. const router = new VueRouter({
  23. routes//引用的上面定义的
  24. })
  25. //4.挂载路由
  26. //把定义好的对象扔进Vue对象里。。
  27. new Vue({
  28. el:'#app',
  29. router,
  30. render: h => h(App)
  31. })

然后再在头部组件 加入跳转到 详情的组件Vue

  1. <template>
  2. <div>
  3. <h1>我是header</h1><br/>
  4. <ul>
  5. //这里是重点
  6. <li v-for="(item ,key) in list"><router-link :to="'/content/'+key">{{key}}*----*{{item}}</router-link></li>
  7. </ul>
  8. </div>
  9. </template>
  10. <script>
  11. export default{
  12. data(){
  13. return{
  14. list:["水瓦","风丑","光犬"]
  15. }
  16. },
  17. methods:{
  18. }
  19. }
  20. </script>
  21. <style lang="scss" scoped="scoped">
  22. </style>

然后再去详情界面去看看值

  1. <template>
  2. <div>
  3. <h1>我是详情页面,传过来的Key值为{{keyid}}</h1><br/>
  4. </div>
  5. </template>
  6. <script>
  7. export default{
  8. data(){
  9. return{
  10. msg:'我是详情页面+1',
  11. keyid:''
  12. }
  13. },
  14. methods:{
  15. },
  16. mounted(){
  17. console.log(this.$route.params); /*获取动态路由传值*/
  18. alert(this.$route.params.keyid);
  19. this.keyid = this.$route.params.keyid;
  20. }
  21. }
  22. </script>
  23. <style lang="scss" scoped="scoped">
  24. </style>

上面是Vue的配置传值,但是还可以用们一直的用在地址栏拼接参数的get传值

main.js

{ path: '/content', component: content }

header.vue

  1. <template>
  2. <div>
  3. <h1>我是header</h1><br/>
  4. <ul>
  5. <li v-for="(item ,key) in list"><router-link :to="'/content?keyid='+key">{{key}}*----*{{item}}</router-link></li>
  6. </ul>
  7. </div>
  8. </template>
  9. <script>
  10. export default{
  11. data(){
  12. return{
  13. list:["水瓦","风丑","光犬"]
  14. }
  15. },
  16. methods:{
  17. }
  18. }
  19. </script>
  20. <style lang="scss" scoped="scoped">
  21. </style>

content.vue

  1. <template>
  2. <div>
  3. <h1>我是详情页面,传过来的Key值为{{keyid}}</h1><br/>
  4. </div>
  5. </template>
  6. <script>
  7. export default{
  8. data(){
  9. return{
  10. msg:'我是详情页面+1',
  11. keyid:''
  12. }
  13. },
  14. methods:{
  15. },
  16. mounted(){
  17. console.log(this.$route.query); /*获取get传过来的值*/
  18. alert(this.$route.query.keyid);
  19. this.keyid = this.$route.query.keyid;
  20. }
  21. }
  22. </script>
  23. <style lang="scss" scoped="scoped">
  24. </style>

实际操作接口调用的代码

  1. <template>
  2. <div id="news">
  3. 我是新闻组件
  4. <ul class="list">
  5. <li v-for="(item,key) in list">
  6. <router-link :to="'/content/'+item.aid">{{item.title}}</router-link>
  7. </li>
  8. </ul>
  9. </div>
  10. </template>
  11. <script>
  12. export default{
  13. data(){
  14. return {
  15. msg:'我是一个新闻组件' ,
  16. list:[]
  17. }
  18. },
  19. methods:{
  20. requestData(){
  21. //jsonp请求的话 后台api接口要支持jsonp
  22. var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1';
  23. this.$http.jsonp(api).then((response)=>{
  24. console.log(response);
  25. //注意:用到this要注意this指向
  26. this.list=response.body.result;
  27. },function(err){
  28. console.log(err);
  29. })
  30. }
  31. },
  32. mounted(){
  33. this.requestData();
  34. }
  35. }
  36. </script>
  1. <template>
  2. <div id="content">
  3. <h2>{{list.title}}</h2>
  4. <div v-html="list.content"></div>
  5. </div>
  6. </template>
  7. <script>
  8. export default{
  9. data(){
  10. return{
  11. msg:'数据',
  12. list:[]
  13. }
  14. },
  15. mounted(){
  16. // console.log(this.$route.params); /*获取动态路由传值*/
  17. var aid=this.$route.params.aid;
  18. //调用请求数据的方法
  19. this.requestData(aid);
  20. },
  21. methods:{
  22. requestData(aid){
  23. //get请求如果跨域的话 后台php java 里面要允许跨域请求
  24. var api='http://www.phonegap100.com/appapi.php?a=getPortalArticle&aid='+aid;
  25. this.$http.get(api).then((response)=>{
  26. console.log(response);
  27. this.list=response.body.result[0];
  28. },(err)=>{
  29. console.log(err)
  30. })
  31. }
  32. }
  33. }
  34. </script>

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号