從零開始三天學會微信小程序開發(三)

看到不少入門的小程序開發者不斷的問重復性的問題,我們從實戰角度開發了這個課程,希望能夠幫助大家了解小程序開發。

課程分三天:

  • 第一天:微信小程序開發入門
  • 第二天:給小程序接入云端數據
  • 第三天:完善我的小程序

第三天:完善我的小程序

(一)如何在頁面之間傳遞參數

1. 傳遞參數

我們已經實現了首頁到內容頁面之間的跳轉,但并沒有區分到底是從哪個分類跳轉過去的。為此,我們還需要從index頁面傳遞分類名到detail頁面。

修改index.wxml文件中的navigator組件代碼如下:

<navigator style="border-color: {{link.color}};" class="btn" url="/pages/detail/detail?name={{link.name}}" wx:for="{{columnlinks}}" wx:for-item="link">{{link.name}}</navigator>

即,在原來的url尾部加上了“?name={{link.name}”。

2. 接收參數

回到detail.js文件,修改onLoad方法如下:

 onLoad(options) {this.setData({name:options.name})},

options對象會存放從上一個頁面傳遞過來的參數,在這里options.name就是index頁面傳遞過來的分類名,我們通過this.setData()方法把它綁定到name這個變量中去。

現在你在detail.wxml文件中加上{{name}},可以看到分類名成功地傳遞過來了。

(二)獲取一條評語內容

從Comment評語內容表的設計和數據添加我們可以看到,每個分類下都有很多的評語,而我們這個小程序每次只需要顯示其中一個。所以,我們需要編寫一個從Comment表指定分類中獲取一條記錄的代碼。

  • 首先,在detail.js的數據初始化代碼中定義一個index變量,初始值為0,表示要獲取的那條數據在Comment表指定分類中屬于第幾條。代碼如下:
data: {index:0},
  • 接著,在onLoad()方法中編寫如下的代碼:
onLoad(options) {this.setData({name:options.name,content:''})const query = wx.Bmob.Query("Comment");query.equalTo("categoryname","==",this.data.name);query.skip(this.data.index)query.limit(1)query.find().then(res => {this.setData({content:res[0].content,index:this.data.index + 1});})},

這里需要說明幾點:

  1. query.equalTo方法是Bmob SDK提供的條件查詢方法。在這個例子中,我們要查詢的條件是categoryname字段的值等于this.data.name(傳遞過來的分類名)的值。注意:這里用的是==號,而不是=號。

  2. query.skip(m)和query.limit(n)方法經常配合一起使用,skip方法表示跳過前面m條數據,limit方法表示最多獲取n條數據。

  3. this.setData綁定數據的時候別忘記了index:this.data.index+1,表示我們接下來要獲取的是下一條數據。

現在,數據已經獲取到了,我們還要把它呈現在界面中。修改detail.wxml文件,代碼如下:

<textarea value="{{content}}" class="txt"></textarea>
<view class="row-btn"><button class="bt">換一個</button><button class="bt">復制</button><button class="bt">分享</button>
</view>

修改dtail.wxss文件,給組件添加樣式,代碼如下:

page{padding: 20rpx;
}
.txt{width: 95%;height: 30vh;border-radius: 16rpx ;background: rgb(240, 240, 240);box-sizing: border-box;padding: 20rpx;
}
.row-btn{display: flex;justify-content:space-between;margin-top: 20rpx;margin-right: 20rpx;
}
.bt{color: white;width: 100px !important;background-color: green;margin-right: 10rpx;
}

這里需要了解的是,page樣式是針對整個頁面的。比如,這里通過padding: 20rpx控制頁面內部的組件離邊框20rpx。

完成后預覽的效果如下:

52.png

(三)封裝成一個方法

現在,點擊“換一個”按鈕,textarea的內容并不會有任何變化,我們還需要給這個按鈕添加點擊事件。

打開detail.js文件,添加getContent()方法,并在onLoad()方法中用this.getContent()調用這個方法。代碼如下:

onLoad(options) {this.setData({name:options.name,content:''})this.getContent();},getContent(){const query = wx.Bmob.Query("Comment");query.equalTo("categoryname","==",this.data.name);query.skip(this.data.index);query.limit(1);query.find().then(res => {this.setData({content:res[0].content,index:this.data.index + 1});});},

這里需要說明的是:

  1. getContent()方法是我們自定義的方法,名稱可以改變。

  2. getContent()方法可以放在detail.js文件里面和onLoad()、onReady()等方法同級的任何地方。

  3. 不要漏掉getContent(){ }, 這個方法最后的英文逗號。

(四)給“換一個”按鈕綁定方法

現在,我們可以給“換一個”按鈕綁定(bind:tap)剛寫的getContent方法。修改detail.wxml文件如下:

<button class="bt" bind:tap="getContent">換一個</button>

現在點擊“換一個”按鈕,已經會不斷切換評語內容。

(五)學會看調試器

我們點擊多幾次之后,會發現頁面內容一直保持不變。

觀察開發工具中的“調試器”,看到下面的錯誤提示信息:

53.png

這是因為我們已經翻看到這個分類下的最后一條記錄了。為了解決這個問題,需要簡單修改getContent()方法:

getContent(){const query = wx.Bmob.Query("Comment");query.equalTo("categoryname","==",this.data.name);query.skip(this.data.index);query.limit(1);query.find().then(res => {if(res.length<=0){this.setData({index:0})this.getContent()}else{this.setData({content:res[0].content,index:this.data.index + 1});}});},

即,查詢結果回來之后,我們先判斷這個結果是否有內容。如果沒有的話,設置index為0,并再次獲取。

為了讓界面效果更具有動感,我們還可以和之前一樣,在請求時加上wx.showLoading()和wx.hideLoading()方法。這個自行嘗試添加。

(六)實現更多的功能(復制、分享和客服)

為了實現復制的功能,我們像上面一樣,添加一個copy()方法,代碼如下:

opy(){wx.setClipboardData({data: this.data.content,})},

這個代碼很容易理解,即把this.data.content的內容復制到剪切板中去。

我們再把copy()方法綁定到“復制”按鈕中去:

<button class="bt" bind:tap="copy">復制</button>

完成之后,預覽效果如下:

54.png

小程序還內置了其他的方法,讓我們不需要編寫額外的代碼,下面我們給“分享”按鈕綁定內置的分享功能:

<button class="bt" open-type="share">分享</button>

預覽效果如下:

55.png

聯系“客服”的事件和分享的事件類似,代碼如下:

<button open-type="contact" class="bt">客服</button>

(七)如何選擇小程序的開發主題

開發并不難,只要你肯耐心點,花時間按這個課程的步驟一步一步去實踐,很快就會掌握小程序開發的經驗。

等你掌握好小程序開發技術,可能會更讓你困惑的是:我應該選擇什么樣的開發主題?中國人口那么多,為什么我開發出來的應用沒有人用?

這是因為我們開發產品前沒有好好地進行調研。這里,我們推薦一個小程序:微信指數。

56.png

當你有一個好想法或者想給小程序取名的時候,建議打開這個小程序,查看和你想法相關的各種關鍵詞對應的指數熱度。如果指數熱度很低,那你就要好好審視你這個想法或者名字到底是不是一個好的創意,好的名字。在一個很多魚的大池塘里面釣魚,雖然釣的人多,但機會也更多。在一個連小魚小蝦都沒有幾個的野池塘,雖然沒有什么人來競爭,但你也很難釣到魚。

我們的課程到此為止,有任何問題歡迎大家一起交流技術(wechat: xiaowon12),享受寫程序的樂趣。

源碼請查看:https://gitee.com/zhang-ming-123/threedaystudyminiprogram

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38060.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL高級-MVCC- readview介紹

文章目錄 1、介紹2、ReadView中包含了四個核心字段&#xff1a;3、版本鏈數據的訪問規則&#xff1a;4、不同的隔離級別&#xff0c;生成ReadView的時機不同&#xff1a; 1、介紹 ReadView&#xff08;讀視圖&#xff09;是 快照讀 SQL執行時MVCC提取數據的依據&#xff0c;記錄…

【計算機組成原理實驗】——運算器組成實驗

計組TEC4實驗——運算器組成實驗 1. 實驗目的 (1&#xff09;掌握算術邏輯運算加、減、乘、與的工作原理。 (2) 熟悉簡單運算器的數據傳送通路。 (3) 驗證實驗臺運算器的8位加、減、與、直通功能。 (4) 驗證實驗臺的4位乘4位功能。 (5) 按給定數據&#xff0c;完成幾種指…

SerDes介紹以及原語使用介紹(4)ISERDESE2原語仿真

文章目錄 前言一、iserdese2_module模塊二、oserdese2_module模塊三、頂層模塊四、仿真結果分析 前言 上文詳細介紹了ISERDESE2原語的使用&#xff0c;本文根據仿真對ISERDESE2原語的使用進一步加深印象。在仿真時&#xff0c;與OSERDESE進行回環。 一、iserdese2_module模塊…

昇思MindSpore學習筆記4--數據集 Dataset

昇思MindSpore學習筆記4--數據集 Dataset 摘要&#xff1a; 昇思MindSpore數據集Dataset的加載、數據集常見操作和自定義數據集方法。 一、數據集 Dataset概念 MindSpore數據引擎基于Pipeline 數據預處理相關模塊&#xff1a; 數據集Dataset加載原始數據&#xff0c;支持文本…

移動端H5應用,使用了postcss-px-to-viewport插件,750設計稿兼容Vant框架

目前在搞一個移動端的H5項目&#xff0c;使用的是Vue3Vant框架。設計稿是750的&#xff0c;而且使用了postcss-px-to-viewport。所以發現使用Vant框架的時候&#xff0c;發現有點問題&#xff0c;好像縮小了&#xff0c;后來百度了一下&#xff0c;是需要設置portcss.config.js…

vue components

vue components intro 組件是帶有名稱的可復用實例。 因為組件是可復用的組件實例&#xff0c;所以它們與根實例接收相同的選項&#xff0c;例如 data、computed、watch、methods 以及生命周期鉤子等。 組成 props&#xff1a; 組件的attributes&#xff0c;可以傳任意類型…

大創項目推薦 題目:基于機器視覺的圖像矯正 (以車牌識別為例) - 圖像畸變校正

文章目錄 0 簡介1 思路簡介1.1 車牌定位1.2 畸變校正 2 代碼實現2.1 車牌定位2.1.1 通過顏色特征選定可疑區域2.1.2 尋找車牌外圍輪廓2.1.3 車牌區域定位 2.2 畸變校正2.2.1 畸變后車牌頂點定位2.2.2 校正 7 最后 0 簡介 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享…

題目的起名

整個經濟社會描繪為無數個交織的方程組。機場航班的起降時間、物流的路徑規劃、金屬冶煉的原料配比、工廠店鋪的選址……”而這些方程組的價值在于&#xff0c;“為了實現經濟學最簡單而又最權威的目標——對稀缺資源進行最佳利用&#xff0c;必須快速求出這些方程組的最優解。…

Leetcode3192. 使二進制數組全部等于 1 的最少操作次數 II

Every day a Leetcode 題目來源&#xff1a;3192. 使二進制數組全部等于 1 的最少操作次數 II 解法1&#xff1a;遍歷 由于 nums[i] 會被其左側元素的操作影響&#xff0c;所以我們先從最左邊的 nums[0] 開始思考。 分類討論&#xff1a; 如果 nums[0]1&#xff0c;無需反…

debian 安裝mongodb

安裝所需工具 apt install gnupg curl 添加公鑰 wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - 添加源 echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt…

amis-editor 注冊自定義組件

建議先將amis文檔從頭到尾&#xff0c;仔細看一遍。 參考&#xff1a;amis - 低代碼前端框架 amis 的渲染過程是將 json 轉成對應的 React 組件。先通過 json 的 type 找到對應的 Component&#xff0c;然后把其他屬性作為 props 傳遞過去完成渲染。 import * as React from …

Linux開發講課17--- 在shell腳本中,如何將一個命令存儲在一個變量中

問&#xff1a; 將一個命令保存到一個變量中&#xff0c;以便稍后再使用&#xff08;不是命令的輸出&#xff0c;而是命令本身&#xff09;。 有一個簡單的腳本如下&#xff1a; command"ls"; echo "Command: $command"; #Output is: Command: ls b$com…

c++ 給定一個非常巨大的數組,如何找到它的中值

快速選擇算法&#xff08;最優解&#xff09; #include <iostream> #include <vector> #include <algorithm>using namespace std;class Solution { private:// 快速選擇算法中的分區函數int partition(vector<int>& nums, int left, int right)…

逆向學習匯編篇:參數傳遞與返回地址的使用

本節課在線學習視頻&#xff08;網盤地址&#xff0c;保存后即可免費觀看&#xff09;&#xff1a; ??https://pan.quark.cn/s/b5b046015da2?? 在匯編語言中&#xff0c;函數調用和參數傳遞是編程的基礎組成部分。了解如何在匯編中傳遞參數以及如何處理返回地址對于逆向工…

LeetCode 78. 子集

更多題解盡在 https://sugar.matrixlab.dev/algorithm 每日更新。 組隊打卡&#xff0c;更多解法等你一起來參與哦&#xff01; LeetCode 78. 子集&#xff0c;難度中等。 迭代 解題思路&#xff1a; 初始化結果集 result&#xff0c;其中包含一個空集 []&#xff1b;遍歷數…

flex講解

隨著前端技術的不斷發展和更新&#xff0c;flex布局成為前端布局的主流。但是仍然有很多前端新手搞不懂flex到底怎么用&#xff01;&#xff01;&#xff01;今天我們就來好好講講flex布局 老規矩先上定義 什么是flex布局 布局的傳統解決方案&#xff0c;基于盒狀模型&#x…

鄭州高校大學智能制造實驗室數字孿生可視化系統平臺建設項目驗收

隨著制造業的轉型升級&#xff0c;智能化、信息化已成為制造業發展的必然趨勢。數字孿生技術作為智能制造領域的關鍵技術之一&#xff0c;它通過構建與實體系統相對應的虛擬模型&#xff0c;實現對實體系統的實時監測、預測和優化&#xff0c;為制造業的智能化、信息化提供了強…

LitelDE安裝---附帶每一步截圖以及測試

LiteIDE LiteIDE 是一款專為Go語言開發而設計的開源、跨平臺、輕量級集成開發環境&#xff08;IDE&#xff09;&#xff0c;基于 Qt 開發&#xff08;一個跨平臺的 C 框架&#xff09;&#xff0c;支持 Windows、Linux 和 Mac OS X 平臺。LiteIDE 的第一個版本發布于 2011 年 …

PTA-線性表實驗(JAVA)

題目1&#xff1a;Josephus環的問題及算法 【實驗內容】 編程實現如下功能&#xff1a; 題意說明&#xff1a;古代某法官要判決n個犯人的死刑&#xff0c;他有一條荒唐的法律&#xff0c;將犯人站成一個圓圈&#xff0c;從第start個犯人開始數起&#xff0c;每數到第distance的…

【Spring Boot AOP通知順序】

文章目錄 一、Spring Boot AOP簡介二、通知順序1. 通知類型及其順序示例代碼 2. 控制通知順序示例代碼 一、Spring Boot AOP簡介 AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面編程&#xff09;是對OOP&#xff08;Object-Oriented Programming&#xff0c…