Vue中使用watch computed

watch:监听属性,来监听dta中的数据变化  或者route的变化

computed:计算属性,

<!DOCTYPE html>
<html lang="en">
<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="vue-2.4.0.js"></script>
  <script src="vue-router-3.0.1.js"></script>
</head>
<body>
  

  <div class="app">
    <!-- 如果不使用watch 或者计算属性,我们也可以使用事件绑定机制来引用
     -->
    <input type="text" v-model="fristname">
    <input type="text" v-model="lastname">
    <input type="text" v-model="countname">

     <router-link to="/login">登录</router-link>
     <router-link to="/zhuce">注册</router-link>
    <router-view></router-view>
  </div>



  <script>  

    // 路由模板

     var login={
       template:"<h1>登录界面</h1>"
     }
     var zhuce={
       template:"<h1>zhuce界面</h1>"
     }


    // 路由实例
    var router= new VueRouter({
      routes:[
        {path:'/',redirect:'login'},
        {path:'/login',component:login},
        {path:'/zhuce',component:zhuce}
      ]
      
    })

    // vm实例
    var vm=new Vue({
      el:'.app',
      data:{
        fristname:'',
        lastname:''
      },
      methods: {
        
      },
      // 计算属性
      // 在 computed 中,可以定义一些 属性,这些属性,叫做 【计算属性】, 计算属性的,本质,就是 一个方法,只不过,我们在使用 这些计算属性的时候,是把 它们的 名称,
      // 直接当作 属性来使用的;并不会把 计算属性,当作方法去调用;

        // 注意1: 计算属性,在引用的时候,一定不要加 () 去调用,直接把它 当作 普通 属性去使用就好了;
        // 注意2: 只要 计算属性,这个 function 内部,所用到的 任何 data 中的数据发送了变化,就会 立即重新计算 这个 计算属性的值
        // 注意3: 计算属性的求值结果,会被缓存起来,方便下次直接使用; 如果 计算属性方法中,所以来的任何数据,都没有发生过变化,则,不会重新对 计算属性求值;
      computed: {
        countname:function(){
          // return  是必须的参数  必须有返回值
          return this.fristname+this.lastname;
        }   
      },
      // watch 监听data中的属性。
      watch: {
        // 当fristname 发生改变的时候,就会触发这个watch属性
        // 使用这个 属性,可以监视 data 中指定数据的变化,然后触发这个 watch 中对应的 function 处理函数
        fristname:function(){
          console.log("sdfsdfsf");
          
        },
        // 监听$route.path 属性,其中这个函数由两个参数  newval和oldval  一个是新的值,一个是旧的值
        '$route.path':function(newval,oldval){
          if(newval==="/login"){
            console.log("欢迎进入登录界面");
            
          }else if(newval==="/zhuce"){
            console.log("欢迎进入注册界面");
            
          } 


        }
   
        
      },
      router:router
    })
  
  </script>
</body>
</html>
原文地址:https://www.cnblogs.com/xiaowie/p/11790429.html