83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
| 
 | |
| <cn>
 | |
| #### ๆ็ดขๆก
 | |
| ่ชๅจ่กฅๅ
จๅ่ฟ็จๆฐๆฎ็ปๅใ
 | |
| </cn>
 | |
| 
 | |
| <us>
 | |
| #### Search Box
 | |
| Autocomplete with remote ajax data.
 | |
| </us>
 | |
| 
 | |
| ```html
 | |
| <template>
 | |
|   <a-select
 | |
|     mode="combobox"
 | |
|     :value="value"
 | |
|     placeholder="input search text"
 | |
|     style="width: 200px"
 | |
|     :defaultActiveFirstOption="false"
 | |
|     :showArrow="false"
 | |
|     :filterOption="false"
 | |
|     @change="handleChange"
 | |
|   >
 | |
|     <a-select-option v-for="d in data" :key="d.value">{{d.text}}</a-select-option>
 | |
|   </a-select>
 | |
| </template>
 | |
| <script>
 | |
| import jsonp from 'fetch-jsonp';
 | |
| import querystring from 'querystring';
 | |
| 
 | |
| let timeout;
 | |
| let currentValue;
 | |
| 
 | |
| function fetch(value, callback) {
 | |
|   if (timeout) {
 | |
|     clearTimeout(timeout);
 | |
|     timeout = null;
 | |
|   }
 | |
|   currentValue = value;
 | |
| 
 | |
|   function fake() {
 | |
|     const str = querystring.encode({
 | |
|       code: 'utf-8',
 | |
|       q: value,
 | |
|     });
 | |
|     jsonp(`https://suggest.taobao.com/sug?${str}`)
 | |
|       .then(response => response.json())
 | |
|       .then((d) => {
 | |
|         if (currentValue === value) {
 | |
|           const result = d.result;
 | |
|           const data = [];
 | |
|           result.forEach((r) => {
 | |
|             data.push({
 | |
|               value: r[0],
 | |
|               text: r[0],
 | |
|             });
 | |
|           });
 | |
|           callback(data);
 | |
|         }
 | |
|       });
 | |
|   }
 | |
| 
 | |
|   timeout = setTimeout(fake, 300);
 | |
| }
 | |
| export default {
 | |
|   data() {
 | |
|     return {
 | |
|       data: [],
 | |
|       value: '',
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     handleChange (value) {
 | |
|       console.log(value)
 | |
|       this.value = value
 | |
|       fetch(value, data => this.data = data);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| ```
 | |
| 
 |