미니 프로그램에서 콘텐츠 검색 기능을 구현하는 방법을 단계별로 가르쳐드립니다.
이 글은 소규모 프로그램 개발의 실제 경험을 공유하고 소규모 프로그램에서 콘텐츠 검색 기능을 구현하는 방법을 소개합니다. 모두에게 도움이 되기를 바랍니다!
앞서 홈페이지 콘텐츠 목록 표시를 구현했지만, 상단 검색창의 실제 기능은 구현하지 않았습니다. 이번 글에서는 검색창에 실제 검색 기능을 추가해 보겠습니다. [관련 학습 추천 : 미니 프로그램 개발 튜토리얼]
검색 콘텐츠 바인딩
이제 검색창을 클릭하면 어떻게 보이는지 살펴보겠습니다
여기에서는 vant의 검색
을 사용합니다. code >Component, 해당 문서 search
组件,其 文档 中介绍了一些列关于这个组件的事件绑定方法。
我们要使用到的是在确定搜索时去触发真正的内容搜索,所以我们为search
组件增加这一事件的绑定如下
接着,我们在搜索事件的响应实现中打印绑定在搜索组件上的值变量,然后进行输入测试。
handleSearch() { const { searchValue } = this.data console.log('搜索内容', searchValue) }
这里需要注意,在开发者工具中,对于输入框这类组件,由于是在电脑端,所以无法唤起类似手机端的输入法界面,所以交互上与手机中使用小程序的真实情况所有差别。
对于这种情况,我们可以使用预览功能在手机端进行调试,手机端打开小程序后可点击右上角的...
调出调试面板来查看控制台的输出。
或者使用开发者工具提供的真机调试
功能,可以在手机预览小程序的同时,在电脑端的开发者工具内实时看到调试信息。
调试
经过调试,我们发现,search
所绑定的value
只会在第一次输入后改变并存储在searchValue
中,而后续再输入的值并不会更新这个变量,这就导致我们不能每次搜索都使用最新输入的内容,这是存在问题的。
数据绑定
解决的方法也很简单,就是使用小程序自带的数据绑定特性,将search
组件中传入的value
属性改为model:value
,从而启用数据双向绑定。
这样,在后续的输入更新后,都会同时更新searchValue
的值,达到同步修改的效果。
条件查询
那么能够拿到每次搜索框输入的内容,我们就可以拿这个作为关键字,对列表内容进行查询。
规则就是从数据库中的所有记录中查找text
中包含我们的搜索关键字的记录,当然最多也只会一次返回20条记录,然后同样可以支持上拉加载。
其实这里和之前查询数据的方式基本一致,只是在原有的基础上增加一个关键字匹配条件,那么让我们来改造一下之前的数据查询方法。
我们将原本用于刷新整个列表内容的方法增加了搜索内容作为参数,并透传给用于真正查询数据的云函数处理方法。同时,在每次搜索框确认搜索时,判断是否有搜索内容,如果有则去进行数据的重新获取。
数据库记录匹配
接着,我们在云函数中对于数据库数据的提取也需做相应的改动,这里会用到数据库记录的正则匹配
에서는 이 구성 요소 이벤트에 대한 일부 시리즈를 소개합니다. 바인딩 방법.
us 우리가 사용해야 하는 것은 검색이 결정될 때 실제 콘텐츠 검색을 트리거하는 것이므로 다음과 같이 이 이벤트의 바인딩을 search
구성 요소에 추가합니다
다음으로 응답의 검색에 바인딩을 인쇄합니다. 구성 요소에 검색 이벤트 값 변수를 구현한 다음 입력 테스트를 수행합니다. const db = cloud.database()
const collection = db.collection('homeContentList')
let searchPromise
let countPromise
try {
if (content) {
const searchReg = db.RegExp({
regexp: content,
options: 'i'
})
searchPromise = collection.where({
text: searchReg
})
.skip(pageNo).limit(pageSize).get()
countPromise = collection.where({
text: searchReg
})
.count()
} else {
searchPromise = collection.skip(pageNo).limit(pageSize).get()
countPromise = collection.count()
}
const [{ data: listData }, { total }] = await Promise.all([searchPromise, countPromise])
if (listData) {
data = listData
}
totalSize = total
} catch (error) {
console.log('error', error)
}
로그인 후 복사여기서 주목해야 할 점은 개발자 도구에서 입력 상자와 같은 구성 요소의 경우 컴퓨터 측에 있기 때문에 휴대폰 측과 유사한 입력 방법 인터페이스를 불러올 수 없으므로 상호 작용이 완전히 다릅니다. 휴대폰에서 미니 프로그램을 사용하는 실제 상황.
const db = cloud.database() const collection = db.collection('homeContentList') let searchPromise let countPromise try { if (content) { const searchReg = db.RegExp({ regexp: content, options: 'i' }) searchPromise = collection.where({ text: searchReg }) .skip(pageNo).limit(pageSize).get() countPromise = collection.where({ text: searchReg }) .count() } else { searchPromise = collection.skip(pageNo).limit(pageSize).get() countPromise = collection.count() } const [{ data: listData }, { total }] = await Promise.all([searchPromise, countPromise]) if (listData) { data = listData } totalSize = total } catch (error) { console.log('error', error) }
이 경우 미리보기 기능을 이용하여 휴대폰에서 디버깅할 수 있습니다. 휴대폰에서 미니 프로그램을 연 후 오른쪽 상단의 ...
를 클릭하면 불러올 수 있습니다. 콘솔의 출력을 보려면 디버깅 패널을 사용하세요.
실제 디바이스 디버깅
기능을 이용해 휴대폰에서 미니 프로그램을 미리 볼 수 있고, 컴퓨터의 개발자 도구에서 실시간으로 디버깅 정보를 확인할 수 있습니다. Debugging🎜🎜🎜디버깅 후 search
에 바인딩된 값
이 첫 번째에만 사용된다는 것을 발견했습니다. time 입력 후에는 searchValue
에 변경되어 저장되며, 나중에 입력한 값은 이 변수를 업데이트하지 않습니다. 즉, 검색할 때마다 최신 입력 내용을 사용할 수 없다는 것이 문제입니다. 🎜🎜데이터 바인딩🎜🎜🎜해결 방법도 매우 간단합니다. 즉, 미니 프로그램에 포함된 데이터 바인딩 기능을 사용하여 검색<에 추가하면 됩니다. /code> 구성요소 전달된 <code>value
속성이 model:value
로 변경되어 양방향 데이터 바인딩이 가능해집니다. 🎜🎜이런 방식으로 후속 입력 업데이트 후에 searchValue
값이 동시에 업데이트되어 동기 수정 효과를 얻을 수 있습니다. 🎜🎜
🎜조건부 쿼리🎜🎜 그러면 검색창에 매번 입력되는 내용을 얻을 수 있고, 이를 키워드로 활용하여 목록 내용을 쿼리할 수 있습니다. 🎜🎜데이터베이스의 모든 레코드 중에서 검색 키워드가 포함된 레코드를 text
로 찾는 것이 원칙입니다. 물론 한 번에 20개의 레코드만 반환되며 풀업 로드도 가능합니다. 지원됩니다. 🎜🎜실제로 여기서의 방법은 기본적으로 이전 데이터 쿼리 방법과 동일하지만, 기본적으로 키워드 일치 조건을 추가했을 뿐입니다. 따라서 이전 데이터 쿼리 방법을 변형해 보겠습니다. 🎜🎜
🎜🎜us 원래 전체 목록 내용을 새로 고치는 데 사용된 방법은 검색 내용을 매개변수로 추가하고 실제로 데이터를 쿼리하는 데 사용되는 클라우드 함수 처리 방법에 투명하게 전달합니다. 동시에, 검색창에서 검색을 확인할 때마다 검색 내용이 있는지 판단하여, 있으면 해당 데이터를 다시 획득한다. 🎜🎜데이터베이스 레코드 일치🎜🎜🎜다음으로, 클라우드 기능에서 데이터베이스 데이터 추출에도 해당 변경을 적용해야 합니다. 데이터베이스 레코드의 규칙성은 다음과 같습니다. 여기서는 Match
방식을 사용하여 검색 내용을 일치시킵니다. 자세한 내용은 🎜공식 문서🎜🎜🎜를 참조하세요. 변환 후의 핵심 로직은 다음과 같습니다🎜<view class="wrap">
<text class="text">{{text}}</text>
</view>
로그인 후 복사로그인 후 복사🎜동안 수행해야 하는지 구분합니다. 검색 내용이 있는지 여부에 따라 데이터를 조회하는 과정을 거치며, 검색 내용이 있는 경우에는 검색 내용의 대소문자를 무시하여 최대한 많은 내용을 일치시킵니다. 🎜🎜🎜검색 결과🎜🎜🎜🎜🎜🎜이런 방식으로 검색 내용을 쿼리할 수 있습니다. 🎜内容页面优化
검색<에 추가하면 됩니다. /code> 구성요소 전달된 <code>value
속성이 model:value
로 변경되어 양방향 데이터 바인딩이 가능해집니다. 🎜🎜이런 방식으로 후속 입력 업데이트 후에 searchValue
값이 동시에 업데이트되어 동기 수정 효과를 얻을 수 있습니다. 🎜🎜
조건부 쿼리🎜🎜 그러면 검색창에 매번 입력되는 내용을 얻을 수 있고, 이를 키워드로 활용하여 목록 내용을 쿼리할 수 있습니다. 🎜🎜데이터베이스의 모든 레코드 중에서 검색 키워드가 포함된 레코드를 text
로 찾는 것이 원칙입니다. 물론 한 번에 20개의 레코드만 반환되며 풀업 로드도 가능합니다. 지원됩니다. 🎜🎜실제로 여기서의 방법은 기본적으로 이전 데이터 쿼리 방법과 동일하지만, 기본적으로 키워드 일치 조건을 추가했을 뿐입니다. 따라서 이전 데이터 쿼리 방법을 변형해 보겠습니다. 🎜🎜
🎜🎜us 원래 전체 목록 내용을 새로 고치는 데 사용된 방법은 검색 내용을 매개변수로 추가하고 실제로 데이터를 쿼리하는 데 사용되는 클라우드 함수 처리 방법에 투명하게 전달합니다. 동시에, 검색창에서 검색을 확인할 때마다 검색 내용이 있는지 판단하여, 있으면 해당 데이터를 다시 획득한다. 🎜🎜데이터베이스 레코드 일치🎜🎜🎜다음으로, 클라우드 기능에서 데이터베이스 데이터 추출에도 해당 변경을 적용해야 합니다. 데이터베이스 레코드의 규칙성은 다음과 같습니다. 여기서는 Match
방식을 사용하여 검색 내용을 일치시킵니다. 자세한 내용은 🎜공식 문서🎜🎜🎜를 참조하세요. 변환 후의 핵심 로직은 다음과 같습니다🎜<view class="wrap">
<text class="text">{{text}}</text>
</view>
로그인 후 복사로그인 후 복사🎜동안 수행해야 하는지 구분합니다. 검색 내용이 있는지 여부에 따라 데이터를 조회하는 과정을 거치며, 검색 내용이 있는 경우에는 검색 내용의 대소문자를 무시하여 최대한 많은 내용을 일치시킵니다. 🎜🎜🎜검색 결과🎜🎜🎜🎜🎜🎜이런 방식으로 검색 내용을 쿼리할 수 있습니다. 🎜内容页面优化
규칙성은 다음과 같습니다. 여기서는 Match
방식을 사용하여 검색 내용을 일치시킵니다. 자세한 내용은 🎜공식 문서🎜🎜🎜를 참조하세요. 변환 후의 핵심 로직은 다음과 같습니다🎜<view class="wrap"> <text class="text">{{text}}</text> </view>
内容页面优化
最后,我们优化一下首页的展示效果。
无数据组件
很多页面都有可能是数据列表的形式,而其各自在加载完所有数据后需要展示在底部的“没有更多内容”字样可能不同,所以我们将这部分展示封装成一个可供复用的自定义组件。
试图部分
<view class="wrap"> <text class="text">{{text}}</text> </view>
组件样式
.wrap { width: 100%; padding: 20rpx 0 40rpx; text-align: center; } .text { color: #999; font-size: 26rpx; line-height: 30rpx; }
组件参数
Component({ properties: { text: { type: String, value: '没有更多内容了' } } })
展示效果
总结
这篇,我们实现了搜索框功能,将搜索框中输入的内容作为搜索关键字,从而在数据库中查找包含关键字的记录进行展示。另外,我们还将“没有更多内容”封装可供复用的组件。
更多编程相关知识,请访问:编程入门!!
위 내용은 미니 프로그램에서 콘텐츠 검색 기능을 구현하는 방법을 단계별로 가르쳐드립니다.의 상세 내용입니다. 자세한 내용은 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 엔지니어가 글꼴 라이브러리에 추가 항목을 작성합니다. 이 웹사이트에서는 미니 프로그램에서도 최신 문자 분할 입력 방식을 경험할 수 있다고 밝혔습니다. 이 입력 방식은 발음이 불분명한 희귀 문자를 위해 설계되었습니다. 사용자 해체

미니 프로그램은 반응을 사용할 수 있습니다. 사용 방법: 1. "react-reconciler"를 기반으로 렌더러를 구현하고 DSL을 생성합니다. 2. DSL을 구문 분석하고 렌더링하기 위한 미니 프로그램 구성 요소를 만듭니다. 3. npm을 설치하고 개발자를 실행합니다. 도구에서 npm을 빌드합니다. 4. 자신의 페이지에 패키지를 소개한 다음 API를 사용하여 개발을 완료합니다.

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

구현 아이디어 x01 서버 구축 먼저, 서버 측에서는 소켓을 사용하여 메시지를 수락합니다. 소켓 요청이 수락될 때마다 새 스레드가 열려 메시지 배포 및 수락을 관리합니다. 모든 스레드를 관리하여 채팅방의 다양한 기능 처리를 실현합니다. x02 클라이언트의 설정은 서버보다 훨씬 간단합니다. 클라이언트의 기능은 메시지를 보내고 받는 것뿐이며 특정 문자를 입력하는 것뿐입니다. 따라서 다양한 기능을 사용하려면 클라이언트 측에서 두 개의 스레드만 사용해야 합니다. 하나는 메시지 수신 전용이고 다른 하나는 메시지 전송 전용입니다. 왜냐하면, 오직

이번 글은 위챗 미니 프로그램과 관련된 몇 가지 이슈를 주로 소개하며, 미니 프로그램에서 공개 계정 템플릿 메시지를 사용하는 방법을 함께 살펴보겠습니다.

PHP 및 미니 프로그램의 지리적 위치 확인 및 지도 표시 지리적 위치 확인 및 지도 표시는 현대 기술에서 필요한 기능 중 하나가 되었습니다. 모바일 장치의 인기로 인해 위치 확인 및 지도 표시에 대한 사람들의 요구도 증가하고 있습니다. 개발 과정에서 PHP와 애플릿은 두 가지 일반적인 기술 선택입니다. 이 기사에서는 PHP 및 미니 프로그램에서 지리적 위치 측위 및 지도 표시 구현 방법을 소개하고 해당 코드 예제를 첨부합니다. 1. PHP의 위치정보 PHP에서는 타사 위치정보를 사용할 수 있습니다.
