<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
先提下背景:就是在測試的過程中,經常需要用到收貨這個功能。在PC端下了採購單,再到APP去對應功能裡,再輸入好多個欄位,上傳圖片等動作後,終於可以提交。
於是,我決定在平臺上加個小工具,快捷收貨,方便測試用。
那麼,在收貨操作中,要有收貨人這個角色。為了更好的適用性,我決定做成一個搜尋方塊,支援實時搜尋人員。於是,從elementUI上找到了select選擇器 遠端搜尋。
這裡提一下,前端菜鳥怎麼去用elementUI上的這些元件:
<template> <el-select v-model="value" multiple filterable remote reserve-keyword placeholder="請輸入關鍵詞" :remote-method="remoteMethod" :loading="loading"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { options: [], value: [], list: [], loading: false, states: ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"] } }, mounted() { this.list = this.states.map(item => { return { value: `value:${item}`, label: `label:${item}` }; }); }, methods: { remoteMethod(query) { if (query !== '') { this.loading = true; setTimeout(() => { this.loading = false; this.options = this.list.filter(item => { return item.label.toLowerCase() .indexOf(query.toLowerCase()) > -1; }); }, 200); } else { this.options = []; } } } } </script>
從範例程式碼裡,可以看出:
states
應該存放我後端介面返回的資料,範例裡states是列表,我介面返回的也是列表,不過裡面元素都是物件,每個物件裡存著不同人的資訊。
mounted()
方法裡面,是在渲染完成後,將states
裡的列表資料,進一步處理成一個物件,用map()
返回一個新的列表,並且賦值給this.list
。
最終在remoteMethod(query)
方法裡,根據輸入的傳參query,對this.list
裡的資料進行過濾,返回出匹配的資料,賦值到this.options
,這樣下拉選單就可以展示結果。
這裡的.indexOf(query.toLowerCase()) > -1,大於-1說明只要有就行,不論是不是開頭也好,中間也好,或者結尾也好。比如搜“大周”,你輸入“大”或者“周”,都可以搜到。
趕緊參考官方範例,滿心歡喜地開始修改程式碼:
// mounted()內容 mounted() { this.list = this.states.map(item => { return { value: `${item.id}`, label: `${item.role_name}-${item.ad_real_name}` }; }); },// method()裡內容 remoteMethod(query) { if (query !== '') { this.loading = true; this.$axios.post("/api/receiveGoodsQuickly/getWmsAdminInfo", { "ad_real_name": query, "mchid": 6001 }).then((response) => { this.states = response.data['content']; }); setTimeout(() => { this.loading = false; this.options = this.list.filter(item => { return item.label.toLowerCase() .indexOf(query.toLowerCase()) > -1; }); }, 1000); } else { this.options = []; } },
可是實際執行效果是這樣的:
我輸入第一次“張三”,沒結果。當我再輸入一次“張三”,返回出了對應的結果。
我繼續輸入“李四”,仍然沒結果,再輸入一次“李四”,結果出來了......
後來發現,還是不能直接套用官方範例的,因為範例程式碼是直接初始化了資料在states
裡,而我實際是要去請求後端介面才能拿到資料。如此一來,當我第一次呼叫到remoteMethod
方法,實際上this.list是null。當我第二次呼叫的時候,其實出現的是上一次的查詢結果。
最終,找到了解決辦法,就是在computed
增加處理步驟,computed起到偵聽的作用,這樣可以立即得到處理好的資料。
computed: { listSet() { return this.states.map(item => { return { value: `${item.id}`, label: `${item.role_name}-${item.ad_real_name}` }; }); } }, setTimeout(() => { this.loading = false; this.options = this.listSet.filter(item => { // 這裡的this.list,換為this.listSet return item.label.toLowerCase() .indexOf(query.toLowerCase()) > -1; }); }, 1000);
偵錯通過,搜尋結果實時展示。
以上就是前端elementUI select選擇器實現遠端搜尋的詳細內容,更多關於前端elementUI select遠端搜尋的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45