1.計算屬性 我們可以將同一函數定義為一個方法而不是一個計算屬性。兩種方式的最終結果確實是完全相同的。然而,不同的是計算屬性是基於它們的依賴進行緩存的。只在相關依賴發生改變時它們才會重新求值;多次調用,計算屬性會立即返回之前的計算結果,而不必再次執行函數。 2.使用偵聽器 我們發現,與計算屬性相比, ...
1.計算屬性
<div id="app"> <input type="text" v-model="x"> <input type="text" v-model="y"> {{get}} </div> <script> var app=new Vue({ el:"#app", data:{ x:"", y:"" }, computed:{ get:function(){ return this.x+this.y; } } }); </script>
<body> <div id="app"> <input type="text" v-model="msg"> {{msg}} </div> </body> <script> var app=new Vue({ el:"#app", data:{ msg:"", }, watch: { msg:function(newval,oldval){ if(newval=="admin"){ this.msg=oldval; }else{ this.msg=newval; } } }, }); </script>
雖然計算屬性在大多數情況下更合適,但有時也需要一個自定義的偵聽器。這就是為什麼 Vue 通過 watch
選項提供了一個更通用的方法,來響應數據的變化。當需要在數據變化時執行非同步或開銷較大的操作時,這個方式是最有用的。
3.過濾器的使用
局部過濾器:
<body> <div id="app"> <input type="text" v-model="msg"> {{msg|myf|nu}} </div> </body> <script> var app=new Vue({ el:"#app", data: { msg:"", }, filters:{ myf:function(val){ return val.toUpperCase(); }, nu:function(val){ var reg=/\d/g; return val.replace(reg,'*'); } } }); </script>
全局過濾器:
<body> <div id="app2"> <input type="text" v-model="msg"> {{msg|myf|nu}} </div> </body> <script> Vue.filter('myf',function(val){ return val.toUpperCase(); }); Vue.filter('nu',function(val){ var reg=/\d/g; return val.replace(reg,'*'); }); var app2=new Vue({ el:"#app2", data:{ msg:"", } }); </script>
<body> <div id="app"> <p v-color>123131321</p> </div> </body> <script> //全局指令 // Vue.directive("color",{ // inserted:function(el){ // el.style.background="red"; // } // }); var app=new Vue({ el:"#app", directives:{ color:{ inserted:function(el){ el.style.background="green"; } } } }); </script>
5.ref的使用
在學習 jq 時,我們首要任務就是學習選擇的使用,因為選擇可以極其方便幫助我們獲取節點查找dom,因為我們要通過dom展示處理數據。而在Vue中,我們的編程理念發生了變化,變為了數據驅動dom;但有時我們因為某些情況不得不脫離數據操作dom,因此vue為我們提供了 ref 屬性獲取dom節點;
<body> <div id="app"> <input type="button" value="按鈕" @click="get"> <p ref="ps">211113131</p> </div> </body> <script> var app=new Vue({ el:"#app", methods: { //用來獲取具有ref屬性的節點對象 get:function(){ alert(this.$refs.ps.innerHTML); } }, }); </script>
但是在項目開發中,儘可能不要使用ref,因為從一定程度上,ref 違背的mvvm設計原則;