vue實現autoComplete元件
需要掌握的技術點
1、採用mock伺服器
2、實現下拉自動匹配,和其他列表的自動匹配
3、在輸入法輸入的時候,頁面的輸入框不監聽輸入法中的內容
研究方法:
1、檢視開原始碼如何實現
2、記錄研究過程中的知識點
知識補充:
1、compositionstart 事件觸發於一段文字的輸入之前(類似於 keydown 事件,但是該事件僅在若干可見字元的輸入之前,而這些可見字元的輸入可能需要一連串的鍵盤操作、語音識別或者點選輸入法的備選詞)。
2、compositionupdate 事件觸發於字元被輸入到一段文字的時候(這些可見字元的輸入可能需要一連串的鍵盤操作、語音識別或者點選輸入法的備選詞)
3、compositionend 當文字段落的組成完成或取消時, compositionend 事件將被激發 (具有特殊字元的激發, 需要一系列鍵和其他輸入, 如語音識別或移動中的字詞建議)。
這裡注意compositionstart這些事件,
如果要在vue子元件上監聽,那麼需要加.native修飾符。
但是要是在原生DOM上監聽,就不需要加.native屬性了。
<input :disabled="disabled" :class="{error: error}"
:placeholder="placeholder"
@compositionstart="handleComposition"
@compositionupdate="handleComposition"
@compositionend="handleComposition"
@input="handleChange"
:value="value" type="text">
通過this.isOnComposition作為開關,控制節流函式。
handleComposition(event) {
if (event.type === 'compositionend') {
this.isOnComposition = false;
this.handleChange(event);
} else {
this.isOnComposition = true;
}
},
接收真實的資料
handleChange(event) {
let value = event.target.value;
if(!this.isOnComposition){
this.getData(value);
}
},
節流函式。
節流函式開源的有兩種,一種是lodash中的,還有一種是element UI中的節流外掛。在比較了兩者的區別後,個人認為雖然lodash是著名的開源庫,但是它的節流函式真的沒有element UI中的外掛好用。
this.getData = debounce(this.debounce, (value) => {
this.returnValue(value);
});
列表的自動匹配
使用原生列表的備份,藉助過濾器查詢。
createLayerList(value){
value = value.trim().toLowerCase();
let tempArray = [];
tempArray = this.layerListBackUp.filter(item =>{
item = item.showName.trim().toLowerCase();
if(item.indexOf(value)> -1){
return true;
}
});
this.layerList = JSON.parse(JSON.stringify(tempArray));
}
下一期研究什麼呢?
研究mock服務,以及深入闡釋為什麼lodash的節流函式不好用,以及為何element ui的節流函式好用,
相關文章
- Autocomplete自動補全元件-HeyUI元件庫元件UI
- react編寫autocomplete實現(非jsx)ReactJS
- 純js實現 vue 元件 與 vue 單檔案元件對比JSVue元件
- Vue元件實現函式防抖Vue元件函式
- Vue實現函式防抖元件Vue函式元件
- 從零實現Vue的元件庫(十六)- Dropdown 實現Vue元件
- 從零實現Vue的元件庫(十二)- Table 實現Vue元件
- 從零實現Vue的元件庫(一)- Toast 實現Vue元件AST
- 從零實現Vue的元件庫(九)- InputNumber 實現Vue元件
- 從零實現Vue的元件庫(八)- Input 實現Vue元件
- vue元件之輪播圖的實現Vue元件
- 從零實現Vue的元件庫(十)- Select 實現Vue元件
- 從零實現Vue的元件庫(五)- Breadcrumb 實現Vue元件
- 從零實現Vue的元件庫(二)- Slider 實現Vue元件IDE
- 從零實現Vue的元件庫(十一)- Date-picker 實現Vue元件
- 從零實現Vue的元件庫(十四)- RadioGroup 實現Vue元件
- 從零實現Vue的元件庫(六)- Hover-Tip 實現Vue元件
- 簡易 Vue 評論框架的實現————父元件的實現Vue框架元件
- Vue 元件實戰Vue元件
- Vue元件實戰Vue元件
- vue元件之路之輪播圖的實現Vue元件
- 用canvas實現一個vue彈幕元件CanvasVue元件
- Vue路由+Tab元件實現多頁籤功能Vue路由元件
- 實現一個vue元件庫釋出到npmVue元件NPM
- vue實現登入和個人資訊元件展示Vue元件
- 從零實現Vue的元件庫(十五)- Checkbox-Group 實現Vue元件
- 從零實現Vue的元件庫(十三)- Pagination 實現Vue元件
- 從零實現Vue的元件庫(七)- Message-Box 實現Vue元件
- 從零實現Vue的元件庫(四)- File-Reader實現Vue元件
- vue+webpack+amaze-vue實現省市區聯動選擇元件VueWeb元件
- Vue實現內部元件輪播切換效果Vue元件
- vue實戰-元件編寫-todolist元件Vue元件
- Vue遞迴元件實現樹形結構選單Vue遞迴元件
- React 怎麼實現 Vue 的 <keep-alive> 元件ReactVueKeep-Alive元件
- 說說如何基於 Vue.js 實現表格元件Vue.js元件
- vue12-ElementUI tree元件懶載入的實現VueUI元件
- HTML5拖拽API實現vue樹形拖拽元件HTMLAPIVue元件
- Jquery autocompletejQuery