Vue 路由嵌套、数据请求、组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<link rel="stylesheet" href="css/style.css">
<body>

<div id = "app">
    <div class="app" >
        <a class="width"  ><router-link to="/tax">急速免税</router-link> </a>
        <a  class="width" ><router-link to="/classify"> 分类</router-link> </a>
        <a  class="width" > <router-link to ="/cart">购物车</router-link></a>
        <a  class="width" ><router-link to ="/my">我的</router-link> </a>

    </div>
    <router-view></router-view>
</div>
</body>

<template id = "tax">
    <div >
        <tax-child1></tax-child1>
        <div v-for="name in names">
            {{name}}
        </div>
        <span v-for="item in movies" >
            <img  style="width: 150px;height:150px;" v-bind:src="item.avatars.large" alt="">
            <span>{{item.name}}</span>
        </span>
       <div>
           <ul style="float: left;margin-right: 50px;margin-left: 50px">
               <li>
                   <router-link :to="{path:'/tax/taxchild1',query:{id:12312313}}">route1</router-link>
               </li>
               <li>
                   <router-link :to="{path:'/tax/taxchild2',query:{id:345353}}">route2</router-link>
               </li>
           </ul>

           <router-view></router-view>

       </div>
    </div>
</template>

<script type="text/x-template" id = "classify">
    <div>
        <div>我是分类</div>
        <button @click ="goCar">跳到购物车</button>
    </div>

</script>
<script type="text/x-template" id = "cart">
    <div>我是购物车</div>
</script>
<script type="text/x-template" id = "my">
   <div>
       <span>我的资料</span>
   </div>
 </script>

<template id ="tax-child1">
    <div>
        <ul>
            <li>tax-child1 01</li>
            <li>tax-child1 02</li>
            <li>tax-child1 03</li>
        </ul>
    </div>
</template>

<template id ="tax-child2">

    <ul>
        <li>tax-child2 01</li>
        <li>tax-child2 02</li>
        <li>tax-child2 03</li>
    </ul>

</template>


<script type="text/javascript" src = "vue_js/vue.js"></script>
<script type="text/javascript" src = "vue_router/vue_router.js"></script>
<script type="text/javascript" src = "vue_js/resoure.js"></script>
<script>

    /*import Vue from './vue_js/vue.js';
    import Router from './vue_router/vue_router.js';
    import resoure from './vue_js/resoure.js';*/
    const testTax = Vue.component("test-tax",{
        template:"#tax",
        replace:true,
        props:{

        },
        data:function(){
            return {
                movies:[],
                names:["赌神","四面楚歌"]
            }
        },
        mounted:function () {
            console.log(this);
            let that = this;
            var url = "https://api.douban.com/v2/movie/subject/1764796";
            this.$http.jsonp(url, {}, {
            }).then(function(response) {
                that.movies = response.body.casts;
                console.log(that.movies);
            }, function(response) {
                // 这里是处理错误的回调
                console.log(response);
            });
        }
    });
    const testClassify =  Vue.component("test-classify",{
        template:"#classify",
        data:function(){
            return {

            }

        },
        methods:{
            goCar:function (){
                /*  route.go("/cart");*/
                this.$router.push({ path: 'cart', query: { id: 12312312313 } });
                /*this.$router.go({path:"cart"});拿不到值*/
            }
        }
    });
    const testCart  = Vue.component("test-cart",{
        template:"#cart",
        props:[],
        data:function(){
            return {
            }
        },
        mounted:function(){
            console.log(this.$route.query.id);
        }

    });
    const testMy =  Vue.component("test-my",{
        template:"#my",
        props:[],
        data:function(){
            return {

            }

        },
        mounted:function(){

        }
    });

    const taxChild1 =  Vue.component("tax-child1",{
        template:"#tax-child1",
        data:function(){
            return {

            }

        },
        mounted:function(){
            console.log(this.$route.query.id);
        }
    });

    const taxChild2 =  Vue.component("tax-child2",{
        template:"#tax-child2",
        data:function(){
            return {

            }

        }
    });


    const router = new VueRouter({
        routes: [
            {
                path: '/tax',
                component: testTax,
                children:[
                    {path:'/tax/taxchild1',component:taxChild1},
                    {path:'/tax/taxchild2',component:taxChild2}
                ]

            },
            {
                path: '/classify',
                component: testClassify
            },
            {
                path: '/cart',
                component: testCart
            },
            {
                path: '/my',
                component: testMy
            },
            { path: "", redirect: '/tax' }
        ]

    });


    const app = new Vue({router}).$mount('#app')


</script>

</html>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值