Vue的computed屬性可謂是Vue的重頭戲之一,它可以根據已有的數據派生出一些新的數據,而且當派生數據依賴的原始數據發生變化時,派生數據也會自動更新。在實際開發中,computed屬性被廣泛使用,因為它為我們提供了一種方便快捷的計算屬性的方式。
Computed屬性是一個對象,其中可以包含若干計算屬性的定義。計算屬性需要定義一個名稱和一個函數,在每次讀取計算屬性的值時,會自動調用該函數進行計算。computed屬性還可以傳入指定的參數,以滿足不同的計算需求。
computed: { // 帶參數的計算屬性 totalPrice: function () { return function (discount) { // 計算商品總價,并折扣處理 return this.price * this.quantity * (1 - discount / 100); } }() }
在上面的代碼中,我們定義了一個名稱為totalPrice的計算屬性,并且它帶有一個參數discount。在函數體內,我們通過使用this關鍵字來獲取Vue實例中的其他數據屬性。在最后,我們通過在函數體的末尾加上()的方式讓該函數立即執行,并返回計算結果。
當我們希望傳入指定參數調用計算屬性時,可以直接使用computed屬性的key來進行調用并傳入參數即可。
computed: { totalPrice: function () { return function (discount) { return this.price * this.quantity * (1 - discount / 100) } }() }, methods: { // 調用 totalComputed 計算屬性,并傳入指定參數 applyDiscount: function () { var discountedPrice = this.totalPrice(10); // ... } }
在上面的代碼中,我們在methods區塊中定義了一個名為applyDiscount的方法,該方法通過給totalPrice計算屬性傳入參數10,來計算相應的商品打折價格。