您好,登錄后才能下訂單哦!
本文實例講述了vue.js計算屬性computed用法。分享給大家供大家參考,具體如下:
需求:數據msg值為12345,我們現在需要反向顯示成54321。
在模板中綁定表達式是非常便利的,但是它們實際上只用于簡單的操作。在模板中放入太多的邏輯會讓模板過重且難以維護。例如:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div id="box"> {{msg}} <hr> {{ msg.split('').reverse().join('') }} </div> <script type="text/javascript"> var vm = new Vue({ el:'#box', data:{ msg:'12345' } }); console.log(vm.reMsg); </script> </body> </html>
使用本站HTML/CSS/JS在線運行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運行效果:
Vue提供computed的方式。例如:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div id="box"> {{msg}} <hr> {{reMsg}} </div> <script type="text/javascript"> var vm = new Vue({ el:'#box', data:{ msg:'12345' }, computed:{ reMsg:function(){ return this.msg.split('').reverse().join('') } } }); console.log(vm.reMsg); </script> </body> </html>
同樣的可以達到效果!
但是這邊的reMsg是不能被修改的!! 也就是修改的時候他不會按照我們js給的規則去向反顯示,因為默認只有getter,我們可以提供一個setter:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div id="box"> {{msg}} <hr> {{reMsg}} </div> <script type="text/javascript"> var vm = new Vue({ el:'#box', data:{ msg:'12345' }, computed:{ reMsg:{ get:function(){ return this.msg.split('').reverse().join('') }, set:function(value){ this.msg = value; //最后修改了msg } } } }); console.log(vm.reMsg = 'abcd'); //當我們修改這個變量的時候他的值也是跟隨著我們js規則反向顯示 </script> </body> </html>
使用本站HTML/CSS/JS在線運行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運行效果:
表達式計算demo:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <!-- Vue.js --> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div> <!--# 如表達式如果過長,或邏輯更為復雜時,就會變得臃腫甚至難以閱讀和維護 #--> {{ text.split(',').reverse().join(',') }} <!--# 所以在遇到復雜的邏輯時應該使用計算機屬性 #--> </div> <div id="app"> {{ reversedText }} </div> </body> </html> <script> var app = new Vue({ el:'#app', data:{ text:'123,456' }, //所有的計算屬性都以函數的形式寫在vue實例內的computed選項內,最終返回計算的結果 computed:{ reversedText:function () { //這里的this指向的是當前的vue實例 return this.text.split(',').reverse().join(','); } } }) </script>
使用本站HTML/CSS/JS在線運行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運行效果:
希望本文所述對大家vue.js程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。