watch和computed都可以監控程序員想要監控的對象,當這些對象發生改變以後,能夠觸發回調函數作一些邏輯處理html
watch監控自身屬性變化vue
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="https://cdn.jsdelivr.net/npm/vue"></script> </head> <body> <div id="app"> <input type="text" v-model="firstName" /> <input type="text" v-model="lastName" />
{{fullName}} </div> <script> new Vue({ el: '#app', data: { firstName: 'hello', lastName: 'vue', fullName: 'hello.ve' }, watch: { 'firstName': function(newval, oldval) { // console.log(newval,oldval); this.fullName = this.firstName + this.lastName; }, 'lastName': function(newval, oldval) { // console.log(newval,oldval); this.fullName = this.firstName + this.lastName; } } }); </script> </body> </html>
watch監控路由對象程序員
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script> </head> <body> <div id="app"> <router-link to="/login">登陸</router-link> <router-link to="/register/value">註冊</router-link> <!--組件的顯示佔位域--> <router-view></router-view> </div> <script> //1.0 準備組件 var App = Vue.extend({}); var login = Vue.extend({ template: '<div><h3>登陸</h3></div>' }); var register = Vue.extend({ template: '<div><h3>註冊{{name}}</h3></div>', data: function() { return { name: '' } }, created: function() { this.name = this.$route.params.name; } }); //2.0 實例化路由規則對象 var router = new VueRouter({ routes: [{ path: '/login', component: login }, { path: '/register/:name', component: register }, { path: '/', //當路徑爲/時,重定向到/login redirect: '/login' } ] }); //3.0 開啓路由對象 new Vue({ el: '#app', router: router, //開啓路由對象 watch: { '$route': function(newroute, oldroute) { console.log(newroute, oldroute); //能夠在這個函數中獲取到當前的路由規則字符串是什麼 //那麼就能夠針對一些特定的頁面作一些特定的處理 } } }) </script> </body> </html>
計算屬性computed的特色vue-router
案例演示npm
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="https://cdn.jsdelivr.net/npm/vue"></script> </head> <body> <div id="app"> <input type="text" v-model="firstName" /> <input type="text" v-model="lastName" /> {{fullName}} </div> <script> new Vue({ el: '#app', data: { firstName: 'hello', lastName: 'vue' }, computed: { fullName: function() { return this.firstName + this.lastName; } } }); </script> </body> </html>