我一直在尝试根据用户创建的“标签”,以每个鸡尾酒配方的过滤器按钮.过滤器按钮显示,但当你点击他们什么也没发生.我已经有一个鸡尾酒的最爱过滤器,这工作正常.任何帮助将不胜感激!
<div id="below-nav">
<div id="filter-and-sort-area">
<div><b>Filter by:</b></div>
<div class="line-break"></div>
<div id="filter-and-sort-button-wrapper">
<div class="filter-radio-toolbar">
<!-- Favorite Filter -->
<input type="radio" id="radio1" v-model="favoriteFilter" value="All" checked>
<label for="radio1">Show All</label>
<input type="radio" id="radio2" v-model="favoriteFilter" value="true">
<label for="radio2">Favorites</label>
<!-- Tag Filters -->
<input type="radio" id="radio3" v-model="tag">
<label v-for="(cocktail, index) in cocktails" :key="index" v-if="cocktail.tag !== null" for="radio3">
{{ cocktail.tag }}
</label>
</div>
</div>
</div>
</div>
个字符
here's what the favorite and tag filters look like
下面是沙盒:https://codesandbox.io/s/vue-filters-from-user-input-9g95kg?file=/src/App.vue
1条答案
按热度按时间gtlvzcf81#
以下是我想做的更正:
v-for循环应该为每个过滤器创建1个输入和1个标签
字符串
不建议在同一个元素上组合合并
v-for
和v-if
,我将它们分别拆分为一个模板和一个span元素, Package 一个输入和标签。这里纠正的另一个错误是每个标签需要一个唯一的“for”属性,这意味着每个输入需要一个唯一的“id”属性。这可以通过将template literal strings绑定到这些属性并使用一个唯一的值(如
cocktail.id
)来完成。value
属性也在无线电输入上丢失。我将其设置为cocktail.tag
。至于脚本代码,标记的数组过滤器只需要
cocktail.tag
和this.tagFilter
之间的比较。型
任何truthy值都可以从filter回调函数返回,所以在
if
语句中,你可以 *return this.cocktails
,这和return true
一样,但我个人更喜欢返回当前元素。Updated codesandbox的