vue.js計(jì)算屬性computed用法實(shí)例分析
本文實(shí)例講述了vue.js計(jì)算屬性computed用法。分享給大家供大家參考,具體如下:
需求:數(shù)據(jù)msg值為12345,我們現(xiàn)在需要反向顯示成54321。
在模板中綁定表達(dá)式是非常便利的,但是它們實(shí)際上只用于簡單的操作。在模板中放入太多的邏輯會(huì)讓模板過重且難以維護(hù)。例如:
<!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在線運(yùn)行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運(yùn)行效果:
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>
同樣的可以達(dá)到效果!
但是這邊的reMsg是不能被修改的??! 也就是修改的時(shí)候他不會(huì)按照我們js給的規(guī)則去向反顯示,因?yàn)槟J(rèn)只有g(shù)etter,我們可以提供一個(gè)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'); //當(dāng)我們修改這個(gè)變量的時(shí)候他的值也是跟隨著我們js規(guī)則反向顯示 </script> </body> </html>
使用本站HTML/CSS/JS在線運(yùn)行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運(yùn)行效果:
表達(dá)式計(jì)算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> <!--# 如表達(dá)式如果過長,或邏輯更為復(fù)雜時(shí),就會(huì)變得臃腫甚至難以閱讀和維護(hù) #--> {{ text.split(',').reverse().join(',') }} <!--# 所以在遇到復(fù)雜的邏輯時(shí)應(yīng)該使用計(jì)算機(jī)屬性 #--> </div> <div id="app"> {{ reversedText }} </div> </body> </html> <script> var app = new Vue({ el:'#app', data:{ text:'123,456' }, //所有的計(jì)算屬性都以函數(shù)的形式寫在vue實(shí)例內(nèi)的computed選項(xiàng)內(nèi),最終返回計(jì)算的結(jié)果 computed:{ reversedText:function () { //這里的this指向的是當(dāng)前的vue實(shí)例 return this.text.split(',').reverse().join(','); } } }) </script>
使用本站HTML/CSS/JS在線運(yùn)行測試工具:http://tools.jb51.net/code/HtmlJsRun,可得到如下測試運(yùn)行效果:
希望本文所述對大家vue.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹
這篇文章主要為大家詳細(xì)介紹了vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10vue實(shí)現(xiàn)監(jiān)聽數(shù)值的變化,并捕捉到
這篇文章主要介紹了vue實(shí)現(xiàn)監(jiān)聽數(shù)值的變化,并捕捉到問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue項(xiàng)目中企業(yè)微信使用js-sdk時(shí)config和agentConfig配置方式詳解
這篇文章主要介紹了vue項(xiàng)目中企業(yè)微信使用js-sdk時(shí)config和agentConfig配置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12VsCode新建VueJs項(xiàng)目的詳細(xì)步驟
本篇文章主要介紹了VsCode新建VueJs項(xiàng)目的詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Vue 實(shí)現(xiàn)前端權(quán)限控制的示例代碼
這篇文章主要介紹了Vue 實(shí)現(xiàn)前端權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Vue實(shí)現(xiàn)路由跳轉(zhuǎn)和嵌套
本篇文章主要介紹了Vue實(shí)現(xiàn)路由跳轉(zhuǎn)和嵌套,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06