我正在尝试创建一个简单的筛选器,当我点击“添加筛选器”按钮时,它会复制筛选器并将其添加到筛选器数组中。添加没有问题,但是我无法删除(带有叉号的)正确输入 - 我总是从数组中删除最后一项而不是正确的一项。我有以下代码:
<div class="container">
<div class="jumbotron">
<div>
<div class="form-group">
<input type="text" class="form-control input-sm" id="pref-search">
</div>
<div class="form-group">
<button type="button" class="btn btn-default filter-col btn-sm" v-on:click="addFilter">
<i class="fa fa-plus-circle" aria-hidden="true"></i> Add filter
</button>
</div>
</div>
<div v-for="filter in extFilters.filters" style="margin: 10px 0">
<div class="form-group">
<input type="text" class="form-control input-sm" id="pref-search">
</div>
<div class="form-group">
<button type="button" class="btn btn-default filter-col btn-sm" v-on:click="addFilter">
<i class="fa fa-plus-circle" aria-hidden="true"></i> Add filter
</button>
<span v-on:click="removeFilter(filter)"><i class="fa fa-times" aria-hidden="true"></i></span>
</div>
</div>
</div>
</div>
这里介绍一下Vue.js:
var data = {
'filters': [],
}
// app Vue instance
var app = new Vue({
// app initial state
data: {
extFilters: data,
},
// methods that implement data logic.
methods: {
addFilter: function() {
this.extFilters.filters.push({
andor: 'a',
search_in: '',
operator: '',
text: ''
})
},
removeFilter: function(filter) {
var index = this.extFilters.filters.indexOf(filter);
this.extFilters.filters.splice(index, 1);
},
},
})
// mount
app.$mount('.jumbotron')
问题是当我添加了三个过滤器并且想要删除第一个时,它总会删除最后一个。为什么会这样或者我做错了什么?
这里是我在jsFiddle上的问题。最好的答案也应该在jsFiddle上。