searchBar.vue 1.95 KB
<template>
	<div class="search-bar" v-if="searchs">
		<div class="box">
			<div class="search-form">
				<div class="left">
					<div class="icon">
						<img src="static/img/icon_search.png" class="img" />
					</div>
					<div class="input-box">
						<div class="search-input-view" v-if="searchs.isLink" @click="toSearch">{{searchs.placeholder}}</div>
						<input type="search" class="search-input" :placeholder="searchs.placeholder" placeholder-style="color: #B2B2B2" v-else v-model="keyword" confirm-type="search" @input="doInput" @confirm="doSearch" />
					</div>
				</div>
				<div class="right">
					<div class="clear-input" v-if="keyword" @click="clearInput">
						<img src="static/img/icon_clear_input.png" class="img" />
					</div>
				</div>
			</div>
		</div>
	</div>
</template>

<script>
	export default {
		name: "searchBar",
		data() {
			return {
				keyword: ""
			};
		},
		props: ["searchs"],
		methods: {
			
			/**
			 * 获取keyword
			 */
			getKeyword() {
				return this.keyword;
			},
			
			/**
			 * 设置keyword
			 * @param {string} keyword [搜索关键字]
			 */
			setKeyword(keyword) {
				this.$set(this, "keyword", keyword);
			},
			
			/**
			 * 键盘输入监听
			 * @param {Object} $event [键盘输入对象]
			 */
			doInput($event) {
				this.$emit("doInput", $event.detail.value);
			},
			
			/**
			 * 搜索
			 * @param {object} $event [input对象]
			 */
			doSearch($event) {
				
				// 调用搜索
				if ($event.detail.value) {
					this.$emit("doSearch", $event.detail.value);
				}
			},
			
			/**
			 * 跳转搜索页面
			 */
			toSearch() {
				
				// 跳转搜索页面
				this.$emit("toSearch");
			},
			
			/**
			 * 清除搜索文本内容
			 */
			clearInput() {
				
				// 清除搜索文本内容
				this.$set(this, "keyword", "");
				
				// 发送清空input事件
				this.$emit("clearInput");
			}
		}
	}
</script>

<style rel="stylesheet/less" lang="less" scoped>
	@import './searchBar';
</style>