elementUI 之 Input 输入框,带输入建议
程序员文章站
2022-01-05 10:50:55
...
下面代码段来自官方文档,只是添加了注释!
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/[email protected]/lib/index.js"></script>
<div id="app">
<el-row class="demo-autocomplete">
<el-col :span="12">
<div class="sub-title">**即列出输入建议</div>
<el-autocomplete
class="inline-input"
v-model="state1"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelect"
></el-autocomplete>
</el-col>
<el-col :span="12">
<div class="sub-title">输入后匹配输入建议</div>
<el-autocomplete
class="inline-input"
v-model="state2"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
:trigger-on-focus="false"
@select="handleSelect"
></el-autocomplete>
</el-col>
</el-row>
</div>
var Main = {
data() {
return {
//①
restaurants: [],
state1: '',
state2: ''
};
},
methods: {
//②
querySearch(queryString, cb) {
var restaurants = this.restaurants;
//③
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
loadAll() {
return [
{ "value": "三全鲜食(北新泾店)", "address": "长宁区新渔路144号" },
{ "value": "Hot honey 首尔炸鸡(仙霞路)", "address": "上海市长宁区淞虹路661号" },
{ "value": "新旺角茶餐厅", "address": "上海市普陀区真北路988号创邑金沙谷6号楼113" },
];
},
handleSelect(item) {
console.log(item);
}
},
mounted() {
this.restaurants = this.loadAll();
}
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
解释如下:
①处的变量restaurants
1、其数据类型是对象数组。在真正项目中,其值应该是从后端查询得到的,该示例为方便演示使用了硬编码。
2、对其第一个值:{ “value”: “三全鲜食(北新泾店)”, “address”: “长宁区新渔路144号” },address属性未使用,你可以忽略它。变量value你以随意修改,只要与这处的代码保持一致即可:return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
②处的函数querySearch(queryString, cb)
1、queryString代表用户输入的查询字符串,例如输入“三全”,会出现“三全鲜食(北新泾店)”,此时queryString的值等于“三全”。
2、我们没有指定cb的值,但经调试后发现,它并不是undefined,而是如下所示,不太理解:)
function(e) {
t.loading = !1,
t.suggestionDisabled || (Array.isArray(e) ? (t.suggestions = e, t.highlightedIndex = t.highlightFirstItem ? 0 : -1) : console.error('[Element Error][Autocomplete]autocomplete suggestions must be an array'))
}
③处
1、如果用户输入了查询字符串,则对候选值集合进行过滤,过滤条件是:
- 忽略大小写
- 以输入的查询字符串开头
2、如果想改为只要包括了查询字符串就显示,可以将上文中的 === 0改为 !== -1
上一篇: elementui 更改样式问题
下一篇: java8 optional防止空指针
推荐阅读
-
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
-
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
-
ElementUI input输入框实现选择部分内容
-
vue表单验证之禁止input输入框输入空格
-
input 标签实现输入框带提示文字效果(两种方法)
-
elementui中input输入框添加回车事件
-
vue中使用element ui的input框做一个带远程搜索的输入框
-
element-ui带输入建议的input框踩坑--输入建议空白
-
Element组件---带输入建议的input小坑
-
element UI实现输入建议下拉列表 —— el-select filterable可筛选的下拉列表 or 带输入建议的输入框 el-autocomplete ?