미니 프로그램에서 검색 기능을 구현하는 방법에 대한 심층 설명
미니 프로그램에서 일반 검색 기능을 구현하는 방법은 무엇입니까? 다음 기사는 미니 프로그램에서 검색 기능을 구현하는 방법을 단계별로 설명합니다. 도움이 되길 바랍니다.
각각의 작은 프로그램을 개발하는 과정에서 기본적으로 검색 기능이 탑재되게 되는데, 그럼 상대적으로 지능적인 검색 기능은 어떻게 구현되는 걸까요? 프레임 기능을 살펴보세요!
개발 준비
- WeChat 애플릿
- 반트 컴포넌트 라이브러리처럼
효과 표시
효과부터 먼저 살펴볼까요
사전 준비
사용된 일부 클라우드 데이터베이스 데이터 가져오기 검색창 기능 테스트
구현
디렉토리 아래에 세 개의 새 페이지를 생성하세요
색인은 검색창의 첫 번째 페이지로 사용됩니다
특정 검색에 사용되는 페이지 검색
hotsearch는 검색 콘텐츠의 상세 페이지입니다
우선 검색창 첫 페이지의 색인 레이아웃을 살펴보겠습니다. 여기서는 주로 검색창의 콘텐츠를 소개합니다. 아래 내용은 여기서 설명하지 않습니다.
index.wxml 코드입니다
<view class="search_1" bindtap="gotoSearch"> <van-search placeholder="搜索单品" disabled /> </view> <view class="search_2"> <view class="pic" bindtap="list" > <image src=""></image> </view> </view> </view>
검색창의 search.wxml 코드입니다
<view class="dewu-search"> <view class="return" > <view class="return_pic" bindtap="gotoindex"> <image ></image> </view> <view class="txt">搜索</view> </view> </view> <van-search value="{{value}}" show-action placeholder="输入商品名称、货号" bind:clear="onClear" bind:search="onSearch" bind:cancel="oncancel" bind:change="onchange" bindtap="input" value="{{value}}" /> <block wx:if="results.length > 0"> <van-cell wx:for="{{results}}" wx:key="_id" title="{{item.title}}" size="large" /> </block> <view class="page1" hidden="{{issuggest==true?'hidden':''}}" > <view class="bd"> <view class="content">热门搜索</view> <view class="box"> <view class="items"> <view class="item" wx:for="{{goods}}" wx:key="index" bindtap="hotsearch" data-id="{{item.id}}" > {{item.hot}} </view> </view> </view> </view> <view class="last"> <view class="content">搜索历史</view> <view class="box"> <view class="items"> <view class="item" wx:for="{{historyList}}" wx:key="index" data-id="{{item.id}}" bindtap="gotohistoryList" wx:key="index"> {{item.hot}} </view> </view> </view> </view> </view> <view class="page2" hidden="{{issuggest==false?'hidden':''}}"> <view class="content1"> <view class="title" wx:for="{{goods1}}" data-id="{{item.id}}" wx:key="index" bindtap="hotsearch" > {{item.hot}} </view> </view> </view> </view>
js 먼저, 클라우드 데이터베이스에 있는 데이터입니다. 소개해야 합니다
const db = wx.cloud.database(); const dewuCollection = db.collection('dewu');
입력 상자가 변경될 때 해당 내용이 팝업되도록 하려면 입력 상자에 내용 입력이 있을 때 해당 내용 페이지가 표시되는지 확인하기 위해 두 페이지가 필요합니다. 나타나야 합니다.
indexOf
를 사용하여 e.detail
(입력 상자 내용)이 클라우드 데이터베이스에 존재하는지 확인하고, 존재하는 경우 이 데이터를 배열에 저장하고 이전에 검색한 내용을 연결합니다. 그런 다음 wx.setStorageSync();
를 사용하여 입력 상자의 데이터를 저장소에 저장한 다음 wx.getStorageSync()
를 사용하여 데이터를 추출합니다. hidden="{{issuggest==false?'hidden':''}}"
indexOf
判断e.detail
(输入框内容)是否是在云数据库里存在的,如果是存在的,那么将这条数据存入一个数组里面,并且连接之前搜索后的数组,再使用 wx.setStorageSync();
将输入框的数据存入到storage里面,然后再wx.getStorageSync()
提取数据。
这是当输入框有数据的时候就会弹出详情页面,点击可以跳转到商品的详情页
这是搜索框的逻辑
if(e.detail.length!=0){ this.setData({ issuggest:true, }) var arr = []; console.log(this.data.goods.length); for (var i = 0; i < this.data.goods.length; i++) { if (this.data.goods[i].hot.indexOf(e.detail)>=0) { arr.push(this.data.goods[i]); } this.setData({ goods1:arr, }) } } else { console.log('succes'); this.setData({ issuggest:false }) } }, async onSearch(e){ var arr1=new Array(); var historyList=new Array(); var storage=new Array(); for (let i = 0; i < this.data.goods.length; i++){ if(e.detail==this.data.goods[i].hot){ arr1.push(this.data.goods[i]); console.log(arr1); break } else{ arr1.push(e.detail); console.log(arr1); } } if(arr1.length>1){ this.setData({ storage:arr1.slice(arr1.length-1,arr1.length) }) } else{ console.log(arr1,'要存进去的数据'); this.setData({ storage:arr1 }) } if(this.data.historyList !=[]){ this.data.historyList = this.data.historyList.concat(this.data.storage);//连接 } else{ this.data.historyList=this.data.storage } wx.setStorageSync('historyList', this.data.historyList); this.setData({ historyList:this.data.historyList }) },
wx.navigateTo
可以用来跳转到详细的页面,加上字符串模板,判断id的值,用数据来驱动页面,跳转到相同的页面不同的数据。
wx.navigateTo({ url: `../hotsearch/hotsearch?id=`+id })
最后还要更新数据
wx.showLoading({ title: '数据加载中...', }) setTimeout(()=>{ wx.hideLoading() this.setData({ goodsNav: nav, goodsList:List, recommend:List, goods2:this.data.historyList }) },1000) // console.log(goodsList,'==========='); },
注意不要忘记要在全局json或者局部页面json里引入需要使用的组件的地址
"usingComponents": { "van-search":"./miniprogram_npm/@vant/weapp/search/index" },
扩展
这个自动跳转到导航栏中间的功能也是挺常用的
这是wxml代码 最主要的是 scroll-x="true"
让导航栏在水平方向可以滑动scroll-with-animation="true"
是让滑动产生动画,scroll-into-view="{{scrollTop}}"
<scroll-view scroll-x="true" scroll-with-animation="true" style="width:100%;" class="scroll-view_H " scroll-into-view="{{scrollTop}}"> <view wx:for="{{goodsNav}}" wx:key="index" id="{{item.id}}" data-index="{{index}}" data-type="{{item.type}}" bindtap="changegoods" class="scroll-view-item_H {{activeNavIndex == index?'active': ''}} " > <text>{{item.text}}</text> </view> </scroll-view> </view>
这是绑定在导航栏上面的事件 let {index, type} = e.currentTarget.dataset;
提取到 index 和 type ,然后设置一个count作为前几个不动,然后拼接给id
,把id
的值传给scrollTop
,让导航栏跳到scrollTop
입력란에 데이터가 있을 때 나타나는 상세페이지입니다. 클릭하시면 상품 상세페이지로 이동합니다
이것이 검색창의 논리입니다
console.log(e); let {index, type} = e.currentTarget.dataset; console.log("index=" +index, "type="+type); this.setData({ activeNavIndex:index }) if (type == 'recommend') { this.setData({ goodsList: this.data.recommend }) } else { let goods = this.data.recommend.filter((good) => good.camptype == type ) this.setData({ goodsList: goods }) //console.log(this.data.goods) } var index1 = e.currentTarget.dataset.index; var count = 2; var id = "item"+(index1-count);//拼接id if(count == 2 && index1 < 3 || count == 3 && index1 < 2 || count == 4 && index1 < 3){ id = "item0"; } console.log("下标",index1,"---分类id名称",id) this.setData({ scrollTop: id }) },
wx.navigateTo
를 사용하여 점프할 수 있습니다. 세부 페이지에 문자열 템플릿을 추가하고, ID 값을 결정하고, 데이터를 사용하여 페이지를 구동하고, 다른 데이터가 있는 동일한 페이지로 이동합니다.rrreee
🎜마지막으로 데이터를 업데이트해야 합니다🎜🎜rrreee🎜글로벌 json 또는 로컬 페이지 json에서 사용해야 하는 컴포넌트의 주소를 입력하는 것을 잊지 않도록 주의하세요🎜rrreeeextend🎜🎜this 네비게이션 바 중앙으로 자동 점프하는 기능도 아주 흔해요🎜🎜
🎜🎜wxml 코드입니다. 가장 중요한 것은
scroll-x="true"
이므로 탐색 모음이 가로 방향으로 슬라이드될 수 있습니다.scroll-with-animation ="true"
는 슬라이드에 애니메이션을 적용하는 것입니다.scroll-into-view="{{scrollTop}}"
🎜rrreee🎜이것은 탐색 모음에 바인딩된 이벤트입니다let {index, type} = e.currentTarget.dataset;
인덱스와 유형을 추출한 다음 개수를 처음 몇 개로 설정한 다음 연결합니다.id
에 넣고id 값
을scrollTop
에 전달하고 탐색 모음이scrollTop
값으로 점프하도록 합니다. code>. 이 값은 중간🎜rrreee🎜이런 식으로 wxss를 추가하면 효과를 얻을 수 있습니다. 그러나 이렇게 쓰면 문제가 있는데, 즉 표시된 내용이 6과 같이 짝수인 경우에는 가운데로 정확하게 점프하지 못하고 3의 위치로 점프하게 되어 약간의 편차가 발생하게 됩니다. . 아직 이 문제를 해결하지 못했습니다. 해결 방법을 아시는 분 계시나요? 🎜🎜소스 코드🎜🎜여기에 프로젝트의 전체 소스 코드가 있습니다. 관심이 있으시면 전체 소스 코드를 확인하실 수 있습니다🎜🎜🎜https://gitee.com/xinccc/ fullstack_huoshan/tree/master/wxapp/dewu🎜
요약
처음으로 조금 완성도 높은 프로젝트를 작성하게 되었습니다. 여기서는 개발 과정에서 겪은 주요 어려움을 주로 소개합니다. 비록 일반적인 어려움은 없지만 그래도 나에게는 큰 의미가 있습니다. 그러한 경험을 통해 저는 아직 배울 것이 많다는 것을 깨달았습니다. 또한 제가 어려움을 겪을 때 저를 지도해 준 선생님들과 반 친구들에게도 감사드립니다. 좋아요를 눌러주시면 저에게 큰 힘이 될 것입니다. 조언이 있으시면 댓글란에서 함께 토론하고 배울 수 있기를 바랍니다.
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 소개를 방문하세요! !
위 내용은 미니 프로그램에서 검색 기능을 구현하는 방법에 대한 심층 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











모바일 인터넷 기술과 스마트폰의 대중화로 인해 WeChat은 사람들의 삶에 없어서는 안될 애플리케이션이 되었습니다. WeChat 미니 프로그램을 사용하면 사람들은 애플리케이션을 다운로드하고 설치하지 않고도 미니 프로그램을 직접 사용하여 몇 가지 간단한 요구 사항을 해결할 수 있습니다. 이 기사에서는 Python을 사용하여 WeChat 애플릿을 개발하는 방법을 소개합니다. 1. 준비 Python을 사용하여 WeChat 애플릿을 개발하기 전에 관련 Python 라이브러리를 설치해야 합니다. 여기서는 wxpy와 itchat 두 라이브러리를 사용하는 것이 좋습니다. wxpy는 위챗 머신입니다

WeChat 미니 프로그램에서 카드 뒤집기 효과 구현 WeChat 미니 프로그램에서 카드 뒤집기 효과를 구현하는 것은 사용자 경험과 인터페이스 상호 작용의 매력을 향상시킬 수 있는 일반적인 애니메이션 효과입니다. 다음은 WeChat 애플릿에서 카드 뒤집기 효과를 구현하는 방법을 자세히 소개하고 관련 코드 예제를 제공합니다. 먼저, 미니 프로그램의 페이지 레이아웃 파일에 두 개의 카드 요소를 정의해야 합니다. 하나는 앞면 내용을 표시하기 위한 것이고 다른 하나는 뒷면 내용을 표시하기 위한 것입니다. <--index.wxml- ->&l

10월 31일 이 사이트의 소식에 따르면 올해 5월 27일 Ant Group은 '한자 선택 프로젝트'를 시작한다고 발표했으며 최근 새로운 진전을 보였습니다. Alipay는 '한자 선택 - 흔하지 않은 문자' 미니 프로그램을 출시했습니다. 희귀 캐릭터는 희귀 캐릭터 라이브러리를 보완하고 희귀 캐릭터에 대한 다양한 입력 경험을 제공하여 Alipay의 희귀 캐릭터 입력 방법을 개선하는 데 도움을 줍니다. 현재 사용자는 "한자픽업", "희귀문자" 등의 키워드를 검색하여 "특수문자" 애플릿에 진입할 수 있습니다. 미니 프로그램에서 사용자는 시스템에서 인식 및 입력되지 않은 희귀 문자의 사진을 제출할 수 있으며 확인 후 Alipay 엔지니어가 글꼴 라이브러리에 추가 항목을 작성합니다. 이 웹사이트에서는 미니 프로그램에서도 최신 문자 분할 입력 방식을 경험할 수 있다고 밝혔습니다. 이 입력 방식은 발음이 불분명한 희귀 문자를 위해 설계되었습니다. 사용자 해체

유니앱이 미니 프로그램과 H5 사이를 빠르게 전환하려면 구체적인 코드 예제가 필요합니다. 최근 모바일 인터넷의 발전과 스마트폰의 대중화로 인해 미니 프로그램과 H5는 필수 애플리케이션 형태가 되었습니다. 크로스 플랫폼 개발 프레임워크인 uniapp은 코드 세트를 기반으로 작은 프로그램과 H5 간의 변환을 신속하게 실현하여 개발 효율성을 크게 향상시킬 수 있습니다. 이 기사에서는 uniapp이 미니 프로그램과 H5 간의 신속한 변환을 달성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 유니앱 유니아 소개

HTML, CSS 및 jQuery: 검색 기능을 사용하여 데이터 테이블 만들기 현대 웹 개발에서 데이터 테이블은 자주 사용되는 요소입니다. 사용자가 데이터를 쉽게 찾고 필터링하기 위해서는 데이터 테이블에 검색 기능을 추가하는 것이 필수 기능이 되었습니다. 이 기사에서는 HTML, CSS 및 jQuery를 사용하여 검색 기능이 있는 데이터 테이블을 만드는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTML 구조 먼저, 데이터 테이블을 수용할 기본 HTML 구조를 만들어야 합니다.

PHP 및 ManticoreSearch를 사용하여 강력한 검색 기능을 개발하는 방법 개요: 검색 기능은 최신 애플리케이션 개발에서 중요한 역할을 합니다. 효율적이고 정확한 검색 기능을 얻으려면 적합한 검색 엔진을 활용하는 것이 중요합니다. ManticoreSearch는 고성능 및 확장 가능한 검색 기능을 제공하는 강력한 전체 텍스트 검색 엔진입니다. 이 기사에서는 PHP와 ManticoreSearch를 사용하여 강력한 검색 기능을 개발하는 방법을 소개하고,

PHPElasticsearch: 유연한 검색 기능을 얻기 위해 동적 매핑을 사용하는 방법은 무엇입니까? 소개: 검색 기능은 최신 애플리케이션 개발에 필수적인 부분입니다. Elasticsearch는 풍부한 기능과 유연한 데이터 모델링을 제공하는 강력한 검색 및 분석 엔진입니다. 이 기사에서는 동적 매핑을 사용하여 유연한 검색 기능을 구현하는 방법에 중점을 둘 것입니다. 1. 동적 매핑 소개 Elasticsearch에서는 매핑(mapp

미니 프로그램 등록 작업 단계: 1. 개인 ID 카드, 기업 사업자 등록증, 법인 ID 카드 및 기타 제출 자료 사본을 준비합니다. 2. 미니 프로그램 관리 배경에 로그인합니다. 4. "기본 설정"을 선택합니다. 5. 제출 정보를 입력합니다. 6. 제출 자료를 업로드합니다. 7. 제출 신청서를 제출합니다. 8. 심사 결과를 기다립니다. 제출이 통과되지 않은 경우 사유에 따라 수정합니다. 9. 제출에 대한 후속 작업은 다음과 같습니다.
