森林海
2021-06-07 17:54:41
我在 Vue 中得到了過濾器。模板:<b-button v-if="filterFilled()" @click="clearFilter"> Clear</b-button>數據:data () { return { filter: { price_from: '', price_to: '', surface_from: '', surface_to: '', floor: '', type: '', structure: '', }, } },我檢查的方法是過濾器臟了:filterFilled(){ return (this.filter.price_from || this.filter.price_to || this.filter.surface_to || this.filter.surface_from || this.filter.floor || this.filter.type || this.filter.structure) },這工作正常,但我的問題是,是否存在更好的方法來詢問對象是否已填充道具?
2 回答

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
您可以使用以下方法檢查是否this.filter至少有一個truthy值some
filterFilled() {
return Object.values(this.filter).some(v => v)
}

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
對于檢查組件中數據的方法,您通常應該更喜歡計算屬性而不是方法,因為它們的性能更高,并且僅在其某些依賴項更改時才調用:
...
data () {
return {
filter: {
price_from: '',
price_to: '',
surface_from: '',
surface_to: '',
floor: '',
type: '',
structure: '',
},
}
},
computed: {
filterFilled() {
// as in @adiga answer, which is great
return Object.values(this.filter).some(v => v);
}
}
添加回答
舉報
0/150
提交
取消