我有一個Vue實例,它具有五個計算屬性函數,它們爲不同的值執行相同的操作。我重複了一下自己,想知道更乾淨的方式來做到這一點,而不用重複我自己。如何使用Vue計算屬性中的參數重用函數?
在HTML模板我有五個輸入字段,每個輸入字段限制爲25個字符,我想,以顯示我顯示一個字符計數器:
<div class='field is-grouped'>
<p class='control is-expanded'>
<input
class="input"
placeholder="Trophy engraving line 1 (25 character limit)"
v-model='engraving.line1'
v-validate="'required'"
:class="{'input': true, 'is-danger': errors.has('engraving.line1') }"
name='engraving.line1'>
</p>
<p class='control'>
<span>{{ line1count }}</span>
</p>
</div>
我有五場,看起來完全一樣除了他們說engraving.line2
,engraving.line3
,engraving.line4
和engraving.line5
。
然後我的組件javascript我定義雕刻對象,併爲每個字段具有相同的計算方法。
export default {
data(){
return {
engraving: {
line1: '',
line2: '',
line3: '',
line4: '',
line5: '',
}
};
},
computed: {
line1count() {
var chars = this.engraving.line1.length,
limit = 25;
return (limit - chars) + "/" + limit + " characters remaining";
},
line2count(){
var chars = this.engraving.line2.length,
limit = 25;
return (limit - chars) + "/" + limit + " characters remaining";
},
line3count(){
var chars = this.engraving.line3.length,
limit = 25;
return (limit - chars) + "/" + limit + " characters remaining";
},
line4count(){
var chars = this.engraving.line4.length,
limit = 25;
return (limit - chars) + "/" + limit + " characters remaining";
},
line5count(){
var chars = this.engraving.line5.length,
limit = 25;
return (limit - chars) + "/" + limit + " characters remaining";
}
},
我怎樣才能resuse該函數接受一個數據參數,而不是重複自己這麼多?
這是使一個偉大的小部件之類的話。 – Bert