Vue JS, как связать флажки? - PullRequest
3 голосов
/ 30 октября 2019

Как связать значение флажков с помощью выражения vue js? Ниже у меня есть данные объекта filteroptions, и мне удается связать значение с # html1, который я поместил ниже.

Что я хочу знать, так это как я могу связать проверенные значения с # html2? выбранные значения из меню drpdown в # html1

Как вы можете видеть на моем фильтре по html2, он не динамический.

Спасибо.

html1

<div class="mh-filter-options">
  <div class="filter-content">
    <ul class="nav nav-pills">
      <li class="dropdown" v-for="(opt, item) in filterOptions" :key="item">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true"
           aria-expanded="false"> {{item}}</a>

        <div class="dropdown-menu">
          <a href="#" v-for="i in opt" :key="i.value">
            <div class="inner">
              <div class="checkbox">
                <label class="filter-label-item">
                  <input type="checkbox" :data-prop="opt" :value=i.value />
                  <span class="cr"><i class="cr-icon fa fa-check"></i></span>
                  <span>{{i.value}} <span class="badge badge-dark">{{i.count}}</span></span>
                </label>
              </div>
            </div>
          </a>
        </div>
      </li>
    </ul>
  </div>
</div>

html 2

<div class="filtered-by">
  <div class="filter-title">Filtered By: </div>
  <div>
    <div class="filter-item">
      Year: <span> 2019 </span>
      <a href="" title="Remove Filter"> <i class="fas fas- fa-times"></i></a>
    </div>
    <div class="filter-item">
      Model: <span> Escape </span>
      <a href="" title="Remove Filter"> <i class="fas fas- fa-times"></i></a>
    </div>
    <div class="filter-item">
      Price range: <span> $5000-$10000 </span>
      <a href="" title="Remove Filter"> <i class="fas fas- fa-times"></i></a>
    </div>
  </div>

  <div class="clear-all-filter">
    <a href="" title="Clear All Filter">Reset Filters</a>
  </div>
</div>

Метод

setFilters() {
  this.filterOptions = {
    year: [{ value: '2019', checked: true, count: 10 }, { value: '2013', checked: false, count: 99 }, { value: '2017', checked: true, count: 10 }],
    model: [{ value: 'Explorer', checked: true, count: 8 }, { value: 'Ram 1500', checked: false, count: 4 }, { value: 'Piloto', checked: false, count: 10 }],
    priceRange: [{ value: '$10,000-$20,000', checked: false, count: 5 }, { value: '$20,000-$30,000', checked: false, count: 22 }, { value: '$30,000-$40,000', checked: false, count: 10 }],
    mileage: [{ value: '1-1000', checked: false, count: 10 }, { value: '1001-2000', checked: false, count: 64 }, { value: '2001-3000', checked: false, count: 10 }],
    bodyStyle: [{ value: 'Crew Cab Pickup', checked: false, count: 13 }, { value: 'Quad Cab Pickup', checked: false, count: 9 }, { value: 'Sport Utility', checked: true, count: 2 }]
  }
},

1 Ответ

0 голосов
/ 30 октября 2019

Вы должны связать флажки с v-моделью , которая принимает логическое значение. Так что в вашем случае это может быть <input type='checkbox' v-model='i.checked'>

Я не уверен, что полностью следую вашему коду, особенно методу setFilters (), но принцип Vue заключается в том, что вы инкапсулируете все свое состояние страницы в модели, затем html2 просто смотрит на значение модели, которое двухсторонне привязано к флажку. Имеет ли это смысл?

...