本文同步發表於Andy's Blog
這兩天,我們介紹了computed、watch、method()、filter屬性。並且對這些特性的使用方式做了介紹與比較。而今天我們就來複習一下,透過computed
、method
屬性來寫一個簡單的貨幣轉換器,來加深我們的印象。
說明:今天我們要做一個美元匯率兌換器,假設 1美元 = 31.0530075 台幣
練習連結
我們先使用methods方法來做練習
HTML部分
<div id="app">
<p>1 美元 = 31.0530075 台幣</p>
<div>美元 <input type="text" v-model="usd" @input="usdtotwd"></div>
<div >新台幣 <input type="text" v-model="twd" @input="twdtousd"></div>
</div>
JavaScript部分
const vm = new Vue({
el: '#app',
data: {
twd: 31.05,
usd: 1
},
methods:{
usdtotwd(){
this.twd = this.usd * 31.0530075
},
twdtousd(){
this.usd = this.twd / 31.0530075
}
}
});
示意圖
我們今天想要做出一個將台幣、港幣、美金這三種幣別兌換的匯率轉換器。
如果我們使用上述methods方法,變成要寫usdtotwd
、usdtohk
、twdtousd
、twdtohk
、 hktotwd
、hktousd
共六種方法,如此一來便會造成程式碼非常冗長。
這時,我們就可以善用computed
來幫助我們解決問題!因為總金額數目是不變的,因此我們只要以一種貨幣當作基準值,就能輕鬆寫出不同貨幣的轉換。
<div id="app">
<p>1 美元 = 31.0530075 台幣</p>
<p>1 美元 = 7.83914083 港幣</p>
<div>美元 <input type="text" v-model="usd"></div>
<div>新台幣 <input type="text" v-model="twd"></div>
<div>港幣 <input type="text" v-model="hk"></div>
</div>
JavaScript部分
const vm = new Vue({
el: '#app',
data: {
// twd: 31.05,
// hk:7.83,
usd: 0,
},
computed:{
twd:{
//初始值
get(){
return this.usd * 31.05
},
//更動後的值
set(val){
this.usd =val/31.05
}
},
hk:{
get(){
return this.usd *7.83
},
set(val){
this.usd =val/7.83
}
}
}
});
示意圖
備註:這題解法概念其實就是
SSOT - Single Source of Truth概念
,我們會在之後Vuex單元提到。有興趣的人可以先看一下參考資料喔!
嗨大大您好,請問這當中的 @input
是什麼呢?
<div id="app">
<p>1 美元 = 31.0530075 台幣</p>
<div>美元 <input type="text" v-model="usd" @input="usdtotwd"></div>
<div >新台幣 <input type="text" v-model="twd" @input="twdtousd"></div>
</div>
THX.
hi 您好
這是事件v-on
事件的縮寫,完整寫法如下
<div id="app">
<p>1 美元 = 31.0530075 台幣</p>
<div>美元 <input type="text" v-model="usd" v-on:input="usdtotwd"></div>
<div >新台幣 <input type="text" v-model="twd" v-on:input="twdtousd"></div>
</div>
詳情可以上Vue官網查看
連結
謝謝!