Vue中的watch属性

vm实例中的watch属性,是用来监视数据的改变的,他是个对象,里面定义函数,函数名就是数据名,这个函数接收两个参数newValoldVal,一个代表新数据,一个代表旧数据,当数据发生改变的时候,就会触发这个函数。

例:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-model='firstName'>+
        <input type="text" v-model= 'lastName'>=
        <input type="text" v-model='fullName'>
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                firstName:'',
                lastName:'',
                fullName:''
            },
            methods: {},
            watch: {
                firstName:function(newVal, oldVal) {
                    this.fullName = newVal + this.lastName;
                },
                lastName: function(newVal, oldVal) {
                    this.fullName = this.firstName + newVal;
                }
            }
        });
    </script>
</body>

</html>

watch的牛逼之处,在于他可以监视一些非Dom元素,比如路由,看下面的例子:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <script src="js/vue-router-3.0.1.js"></script>
</head>

<body>
    <div id="app">
        <router-link to="/login">登陆</router-link>
        <router-link to="/register">注册</router-link>
        <router-view></router-view>
    </div>

    <script>
        var login = {
            template: '<h1>这是登陆页面</h1>'
        }
        var register = {
            template: '<h1>这是注册页面</h1>'
        }
        var router = new VueRouter({
            routes:[
                {path: '/', redirect: '/login'},
                {path: '/login', component: login},
                {path: '/register', component: register}
            ]
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router,
            watch: {
                '$route.path': function(newVal, oldVal) {
                    if(newVal == '/login') {
                        console.log('欢迎进入登陆界面')
                    }else if(newVal == '/register') {
                        console.log('欢迎进入注册页面')
                    }
                }
            }
        });
    </script>
</body>

</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • vue理解浅谈 一 理解vue的核心理念 使用vue会让人感到身心愉悦,它同时具备angular和react的优点...
    ndxs2008阅读 24,475评论 2 18
  • title: vue-watch数组和对象date: 2017-03-21 vue watch 本文通过示例介绍v...
    SanY_cjp阅读 2,051评论 0 4
  • 1.类库( 提供类方法 ) 和框架 类库提供一系列的函数和方法的合集,能够加快你写代码的速度。但是主导逻辑的还是自...
    w_zhuan阅读 1,977评论 0 8
  • vue 2.0 渐进式框架 MVC 单向通信 > m:model 数据层 保存数据 > v:view视图层 用户界...
    web前端ling阅读 924评论 0 0
  • Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务 处理逻辑、数据...
    云中一樵夫阅读 1,184评论 0 1

友情链接更多精彩内容