有時候我們需要在網站上添加一個搜索功能,方便用戶快速找到自己想要的內容,為此,我們可以使用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的靈活性,我們能夠輕松實現前端的搜索功能。