• UniAPP搜索页面,存储关键词


    <template>
    	<view class="container">
    		<!-- 搜索条 -->
    		<!-- <view class="searchTopBox">
    			<view class="searchBoxRadius">
    				<view class="grace-search-icon searchBoxIcon"></view>
    				<input class="searchBoxIpt" type="search" v-model="ipt" @confirm="searchNow($event)" placeholder="关键字"></input>
    			</view>
    		</view> -->
    		<view class="u1">
    			<image src="../../static/img/logo.png" mode="" style=" 128upx; height: 51upx;"></image>
    			<view class="sousuo">
    				<input type="text" value="" placeholder="请输入关键字搜索" focus="true" v-model="ipt" @confirm="searchNow($event)"/>
    				<image src="../../static/img/sousuo.png" mode="" type="search"  @tap="searchNow($event)"></image>
    			</view>
    		</view> 
    		
    		
    		<!-- 搜索历史 -->
    		<view class="searchBotBox">
    			<view class="ov">
    				<view class="fl">历史搜索</view>
    				<view @tap="clearKey" class="fr grace-more-r grace-search-remove">
    					<image src="../../static/img/sc.png" mode=""></image>
    					</view>
    			</view>
    			<view class="searchHistoryBox">
    				<view class="searchHistoryBoxItem" v-for="(item,index) in searchKey" :key='index' @click="qusousuo(item)">
    					{{item}}
    				</view>
    			</view>
    		</view>
    	</view>
    </template>
    <script>
    	export default {
    		data() {
    			return {
    				searchKey: [],
    				ipt:'',
    				searchClose: true,
    				jiaodian:true
    			}
    		},
    		onLoad() {
    			console.log(this.ipt.length)
    		},
    		onShow() {
    			try{
    				var vv = uni.getStorageSync('searchLocal') || "";
    				if(vv) {
    					this.searchKey = JSON.parse(vv);
    				} else {
    					this.searchKey = [];
    				}
    			} catch(e){
    				console.log(e)
    			}
    		},
    		methods: {
    			clearKey: function() {
    				var that = this;
    				uni.showModal({
    					title: '提示',
    					content: '点击肯定将删除全部历史信息,肯定删除吗?',
    					success: function(res) {
    						// if (res.confirm) {
    							that.searchKey = [];
    							uni.setStorage({
    								key: 'searchLocal',
    								data: that.searchKey
    							});
    // 						} else if (res.cancel) {
    // 
    // 						}
    					}
    				});
    
    			},
    			searchNow(e) {
    				console.log(e)
    				this.jiaodian=false;
    				if (this.ipt == '') {
    					uni.showToast({
    						title: '未输入搜索关键字',
    						icon: 'none',
    						duration: 1000
    					});
    					return false;
    				}
    				var that = this;
    				var newArr = that.searchKey;
    				console.log(newArr.length)
    				if(this.searchKey.indexOf(this.ipt) == -1){
    					newArr.unshift(this.ipt);
    				}
    				if(newArr.length >= 11 ){
    					newArr.pop()
    				}
    				console.log(newArr.length)
    				newArr = JSON.stringify(newArr);//转换成json格式的数据
    				uni.setStorage({
    					key: 'searchLocal',
    					data: newArr
    				});
    				this.qusousuo(this.ipt);
    			},
    			qusousuo(e){
    				console.log(e);
    				this.ipt = "";
    				uni.navigateTo({
    					url:'sousuo2?goods_name='+e
    				})
    			}
    		}
    	
    	}
    </script>
    <style lang="scss">
    	.container{
    		padding-left:30upx;
    		padding-right: 30upx;
    		// background: pink;
    	}
    	.u1{
    		display: flex;
    		justify-content: space-between;
    		padding-top: 20upx;
    		padding-bottom: 15upx;
    		.sousuo{
    			display: flex;
    			position: relative;
    			input{
    				font-size: 24upx;
    				line-height: 28upx;
    				border-bottom:1px solid #f5f5f5;
    				 515upx;
    			}
    			image{
    				 35upx;
    				height: 35upx;
    				position: absolute;
    				right: 30upx;
    				z-index: 3;
    			}
    		}
    	}
    	
    	page {
    		background: #FFF;
    	}
    
    	.ov {
    		overflow: hidden;
    	}
    
    	.fl {
    		float: left;
    		font-family: PingFang-SC-Medium;
    		font-size: 16px;
    		font-weight: normal;
    		font-stretch: normal;
    		line-height: 20px;
    		letter-spacing: 0px;
    		color: #666666;
    	}
    
    	.fr {
    		float: right;
    	}
    	.fr image{
    		35upx;
    		height: 37upx;
    	}
    	.searchTopBox {
    		 100%;
    		background-color: #0b877f;
    		height: 100upx;
    		box-sizing: border-box;
    		padding-top: 15upx;
    	}
    
    	.searchBoxRadius {
    		 90%;
    		height: 70upx;
    		background-color: #fff;
    		margin-left: 5%;
    		overflow: hidden;
    		border-radius: 35upx;
    	}
    
    	.searchBoxIcon {
    		font-size: 40upx;
    		margin-top: 20upx;
    		margin-left: 20upx;
    		float: left;
    	}
    
    	.searchBoxIpt {
    		height: 70upx;
    		line-height: 70upx;
    		margin-left: 20upx;
    		float: left;
    	}
    
    	.searchBotBox {
    		 100%;
    		margin-top: 30upx;
    		padding: 15upx 3%;
    		box-sizing: border-box;
    	}
    
    	.searchHistoryBox {
    		 100%;
    		box-sizing: border-box;
    		overflow: hidden;
    		margin-top: 40upx;
    	}
    
    	.searchHistoryBoxItem {
    		float: left;
    		font-size: 26upx;
    		color: #666;
    		line-height: 49upx;
    		height: 50upx;
    		padding: 0 20upx;
    		border-radius: 50upx;
    		margin:15upx 30upx 15upx 0;
    		border: 1px solid #ccc;
    		text-align: center;
    	}
    </style>

      主要是将搜索的关键词存储在uni.setStorage({key: 'searchLocal',data: newArr});中,每次先查询一下将该次搜索的关键词与历史记录数组进行对比,indexof,查找不到将关键词存储到里面。

    自己想要什么...就朝着那个方向前进
  • 相关阅读:
    grep命令详解;单引号和双引号区别(转载)
    Linux下的系统性能调优工具--Perf (转载)
    Shiro
    WebLogic和Tomcat
    MD5加密(java和c#)
    深入理解java泛型
    VS2015常用快捷键总结(转)
    Java 反射 使用总结
    @RequestParam与@PathVariable的区别
    SVN被锁定的几种解决方法
  • 原文地址:https://www.cnblogs.com/booth666/p/14137462.html
Copyright © 2020-2023  润新知