有时候我们需要在网站上添加一个搜索功能,方便用户快速找到自己想要的内容,为此,我们可以使用Vue.js来完成这个搜索功能。
首先,我们需要创建一个Vue实例,然后定义一个data属性用来存储我们搜索的内容,代码如下:
var vm = new Vue({ el: '#app', data: { searchText: '' } })
接着我们需要编写一个搜索框,让用户可以在里面输入搜索词。我们可以使用Vue的v-model指令来实现这一步,代码如下:
现在,我们已经可以获取用户输入的搜索关键字了,接下来需要将这个关键字与我们的数据进行匹配,并显示出匹配结果。这个过程可以通过计算属性来完成,代码如下:
var vm = new Vue({ el: '#app', data: { searchText: '', items: ['apple', 'banana', 'orange', 'pear'] }, computed: { matchingItems: function() { return this.items.filter(function(item) { return item.indexOf(this.searchText) !== -1 }.bind(this)) } } })
- {{ item }}
这样,我们就完成了一个简单的搜索功能。
但是,有时候数据比较庞大,我们直接在前端进行搜索会影响性能,这个时候,我们可以使用后端的搜索接口来进行搜索。
我们可以在Vue中使用axios来发起一个异步请求,并在得到结果后将其展示给用户,代码如下:
var vm = new Vue({ el: '#app', data: { searchText: '', items: [] }, methods: { search: function() { this.items = [] axios.get('/search', { params: { searchText: this.searchText } }).then(function(response) { this.items = response.data }.bind(this)) } } })
- {{ item }}
与此同时,我们需要后端提供一个/search接口,接收前端传入的searchText参数,并进行相应的搜索操作,返回匹配的结果。
构建搜索功能可能需要的额外的工作量,但是通过Vue.js的灵活性,我们能够轻松实现前端的搜索功能。