1. 程式人生 > 程式設計 >Vue計算屬性實現成績單

Vue計算屬性實現成績單

本文例項為大家分享了計算屬性實現成績單,供大家參考,具體內容如下

程式碼如下:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>成績單統計</title>
  <script src="/vue.js" type="text/" charset="utf-8"></script>
  <style type="text/">
   .gridtable{
    font-family:verdana,arial,sans-serif;
    font-size:11px;
    color:#333333;
    border-width: 1px;
    border-color:#666666;
    border-collapse: collapse;
   }
   .gridtable th{
    border-width: 1px;
    padding:8px;
    border-style:solid;
    border-color:#666666;
    background-color: #dedede;
   }
   .gridtable td{
    border-width: 1px;
    padding:8px;
    border-style:solid;
    border-color:#666666;
    background-color: #ffffff;
   }
  </style>
; </head> <body> <div id="app"> <table class="gridtable"> <tr> <th>學科</th> <th>分數</th> </tr> <tr> <td>語文</td> <td> <input type="text" name="" id="" value="" v-model.number="Chinese" /> </td> </tr> <tr> <td>數學</td> <td> <input type="text" name="" id="" value="" v-model.number="Math" /> </td> </tr> <tr> <td>英語</td> <td> <input type="text" name="" id="" value="" v-model.number="English" /> </td> </tr> <tr> <td>總分</td> <td> <input type="text" name="" id="" value="" v-model.number="sum" /> </td> </tr> <tr> <td>平均分</td> <td> <input type="text" name="" id="" value="" v-model.number="average" /> </td> </tr> </table> </div> <script> var vm=new Vue({ el:"#app",data:{ Chinese:100,Math:100,English:60 },computed:{ sum:function(){ return this.Chinese+this.Math+this.English; },average:function(){ return Math.round(this.sum/3); } },}) </script> </body> </html>

Vue計算屬性實現成績單

當我改變語文,數學,英語的成績,總分和平均分會隨著實時變化,這就是Vue計算屬性的特點。

Vue計算屬性的傳參

計算屬性本質是一個方法,但是通常被當作一個屬性來使用,一般不加()。但在實際開發中,如果需要給計算屬性中的方法傳參,就需要使用閉包傳參的方法。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Evaluate</title>
  <script src="js/vue.js" type="text/script" charset="utf-8"
></script> <div id="app"> {{add(2)}} </div> <script type="text/javascript"> var vm =new Vue({ el:"#app",data:{ nuZoHzWdXmber:1 },computed:{ add(){ return function(index){ return this.number+index; } } } }) </script> </head> <body> </body> </html>

注意:

  • 計算屬性本身不能像方法一樣在括號裡填寫引數來達到傳參的目的,需要在該方法體裡寫真正的方法,來接受引數。
  • 同理,計算屬性方法體引數可省略,即本例子中add(){}和add(index){}均可

計算屬性的getter和setter

計算屬性通常用來獲取資料(根據data的變化而變化),所以其預設只有getter,但需要時,Vue.js也提供setter功能。set方法與get方法先後順序無關,並且set方法接受的引數為get方法的返回值。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>Computed</title>
  <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
 </head>
 <body>
  
  <div id="app">
   firstName:<input type="text" name="" id="" value="" v-model="first"/>
   lastName:<input type="text" name="" id="" value="" v-model="last"/>
   <p>fullName:<input type="text" name="" id="" value="" v-model="fullName"/></p>
  </div>
  <script type="text/javascript">
   var vm=new Vue({
    el:"#app",data:{
     first:"Jack",last:"Jones"
    },computed:{
     fullName:{
      get:function(){
       return this.first+" "+this.last
      },set:function(parameter){
       var names=parameter.split(" ")
       this.first=names[0]
       this.last=names[names.length-1]
      }
     }
    }
   })
  </script>
 </body>
</hthttp://www.cppcns.comml>

計算屬性與方法的區別

使用計算屬性的這種方法可以確保程式碼只在必要的時刻執行,適合處理一些潛在資源密集型工作。但是,如果專案不具有快取功能,則要使用methods,要根據實際情況而定。

計算屬性的特點如下:

①當計算屬性的依賴發生變化時,會立即進行計算,並對計算結果進行自動更新。
②計算屬性的求值結果會被快取起來,以方便下次直接使用。
③計算屬性適用於執行更加複雜的表示式,這些表示式往往太長或需要頻繁的重複使用,所以不能在模板中直接使用。
④計算屬性是data物件的一個擴充套件和增強版本。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。