MandyJin / MandyJin.github.io

靳莹莹的博客
https://mandyjin.github.io/
1 stars 0 forks source link

Vue爬坑之路(一)——vue-router #5

Open MandyJin opened 6 years ago

MandyJin commented 6 years ago

先上例子:

<div id="app">
    <!--<router-link :to="{path:'/home'}" tag="button">HOME</router-link>-->
    <!--声明式导航 to  ,默认使用的是push-->
    <router-link to="/home" tag="button">HOME</router-link>
    <router-link to="/list" tag="button">LIST</router-link>
    <router-view></router-view>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script src="../node_modules/vue-router/dist/vue-router.js"></script>
<script>
    //[]
    let home={
        template:"<div><h2>首页</h2><button @click='toList'>跳转到list</button></div>",
        methods:{
            toList(){
                // 编程式路由
                // 所有配置过路由的组件都有两个属性 this.$router和 this.$route
                // this.$router 里面都是方法函数 (push、 replace、 go)
                // this.$route 里面都是属性 (path params query name)
                //this.$router.push("/list");//类似 history.pushState()
                this.$router.replace("/list");
                //["/","/home",'/list',"/home"]
                //["/","/home",'/list',"/list"]
            }
        }
    };
    let list={
        template:"<div><h2>列表页</h2><button @click='back'>返回</button></div>",
        methods:{
            back(){
                //go(n);n>0 前进几次;  n<0 后退几次
                //back() 返回一次.一般不使用,使用go(-1) 代替back
                this.$router.go(-1);
            }
        }
    };
    let routes=[
        {path:"/home",component:home},
        {path:"/list",component:list}
    ];
    let router=new VueRouter({
        routes,
        linkActiveClass:"active"
    });
    let vm = new Vue({
        el: "#app",
        router,
    })
</script>
</body>

$router.push("/list"); 类似 history.pushState() 为理解其原理,这有个文章写的非常好,理解历史栈即可 参考链接

MandyJin commented 6 years ago

双向数据绑定

双向数据绑定指的是将对象属性变化绑定到UI,或者反之。举个例子,如果我们有一个拥有name属性的user对象,当我们给user.name赋予一个新值时UI也会相应的显示新的名字。同样的,如果UI有一个输入字段用来输入用户名,输入一个新的值会使user对象中的name属性也发生变化。