【发布时间】:2022-01-09 19:41:06
【问题描述】:
data() {
return {
searchString: '',
sortKey: 'name',
checked: false,
Item,
items: [{
price: '1',
name: 'mm'
}, ],
computed: {
computedItems() {
return this.items.map((item, index) => {
item.key = `item_${index}`
return item
})
},
index: function() {
let searchString = this.searchString
let itemsClone = [...this.items] // Change added
const sortedArray = itemsClone.sort((a, b) => {
if (a[this.sortKey] < b[this.sortKey]) return -1
if (a[this.sortKey] > b[this.sortKey]) return 1
return 0
})
if (!searchString) {
return sortedArray
} else {
searchString = searchString.trim().toLowerCase()
const search_array = sortedArray.filter((items) => {
if (items.name.toLowerCase().indexOf(searchString) !== -1) {
return items
}
})
return search_array
}
}
}
<div class="wrapper">
<input
type="text"
v-model="searchString"
placeholder="search items from here"
/>
<br />
<virtual-list
class="list"
style="height: 360px; overflow-y: auto"
data-key="key"
:keeps="20"
:data-sources="computedItems"
:data-component="Item"
/>
<hr />
</div>
尝试在 Vuejs 中过滤数组时出现问题?
我能够呈现项目列表,但问题是无法过滤数组文件。我在输入搜索字段中使用了 v-model,然后将计算属性写入其中,但仍然出现错误
下面是我的代码
https://codesandbox.io/s/live-demo-virtual-list-forked-hwq38?file=/src/App.vue
我可以在我的搜索输入中使用 v-model 并过滤数据吗???
【问题讨论】:
-
似乎
computed是从 data() 函数返回的对象的一部分。您应该放置 is 以便计算属性是 Vue 组件的一部分。 -
@nucleaR 您能否提出解决方案,代码有什么问题。更新代码codesandbox.io/s/live-demo-virtual-list-forked-hwq38?file=/src/…
标签: javascript vue.js vuejs2