Найдите лучший способ проверить, заполнен ли объект полями - PullRequest
0 голосов
/ 27 мая 2019

Я получил фильтр в 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 ]

1 голос
/ 27 мая 2019

Помимо предложения @adiga, для методов, проверяющих данные в вашем компоненте, вы, как правило, предпочитаете вычисляемые свойства методам, так как они более производительны и вызываются только при изменении некоторых его зависимостей:

...

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);
     }
  }
1 голос
/ 27 мая 2019

Вы можете проверить, имеет ли this.filter хотя бы одно значение truthy, используя some

filterFilled() {
  return Object.values(this.filter).some(v => v)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...