城市列表搜索是一個(gè)常見的前端問題,現(xiàn)在我們可以使用Vue實(shí)現(xiàn)這個(gè)功能的快速搭建。在Vue中,我們可以使用v-for指令來動(dòng)態(tài)的渲染城市列表,同時(shí)我們可以使用v-model指令來綁定輸入框的值,從而實(shí)現(xiàn)搜索功能。
{{ city }}computed: {
filteredCities: function () {
var self = this;
return self.cities.filter(function (city) {
return city.indexOf(self.keyword) !== -1;
});
}
}
上面的代碼中,我們使用了計(jì)算屬性來動(dòng)態(tài)返回符合搜索關(guān)鍵字的城市列表。在輸入框中輸入關(guān)鍵字時(shí),計(jì)算屬性會(huì)立刻被觸發(fā),并重新計(jì)算符合條件的城市列表,并將其渲染至頁面上。
除了使用計(jì)算屬性,我們還可以使用watch監(jiān)聽輸入框的變化,并在輸入框變化時(shí)重新計(jì)算符合條件的城市列表。
watch: {
keyword: function (newVal, oldVal) {
this.filterCities();
}
},methods: {
filterCities: function () {
var self = this;
self.filteredCities = self.cities.filter(function (city) {
return city.indexOf(self.keyword) !== -1;
});
}
}
使用watch實(shí)現(xiàn)城市列表搜索,可以實(shí)現(xiàn)更為靈活的控制,同時(shí)也可以通過設(shè)置防抖或節(jié)流等技巧來優(yōu)化搜索效果。
除了渲染城市列表以外,還有一些常見的需求,比如城市列表的排序、城市數(shù)據(jù)的異步獲取等。對于這些需求,我們可以使用Vue的生命周期函數(shù)來實(shí)現(xiàn)。
data: function () {
return {
cities: [],
filteredCities: [],
keyword: ''
};
},created: function () {
var self = this;
axios.get('/api/cities').then(function (response) {
self.cities = response.data;
});
},methods: {
sortCities: function () {
this.filteredCities.sort(function(a, b){
if(a >b) return 1;
if(a< b) return -1;
return 0;
});
}
}
總的來說,Vue非常適合實(shí)現(xiàn)城市列表搜索等前端功能,它的雙向數(shù)據(jù)綁定、計(jì)算屬性、watch等特性能夠幫助我們快速實(shí)現(xiàn)各種需求。同時(shí),Vue還有非常完善的生命周期函數(shù)、組件化等特性,可以讓我們更為靈活地控制頁面的展示和邏輯。