2023-10-06放完假后理一下



功能描述如以下

在首頁(yè)關(guān)于輪滑圖的設(shè)置

http(url,that,arr){????//?var?that=this;????wx.request({??????url:url,??????success:(res)=>{????????wx.showLoading({??????????title:"加載完畢",??????????duration:500????????})????????if?(res.data.status==200?)?{??????????that.setData({[arr]:res.data.data})?????????????console.log(res.data);???????????????????????//?console.log(res.data,'89')????????????????????????}??????else?if?(?typeof?res.data.status?===?'undefined'){????????that.setData({[arr]:res.data[0]})??????????console.log(res.data)????????wx.setNavigationBarTitle({??????????title:res.data[0].title????????????})??????}

我們?nèi)绻?qǐng)求數(shù)據(jù)的話一般都會(huì)到j(luò)s中寫wx.request代碼椭赋√靶剑可如果我們發(fā)現(xiàn)有幾個(gè)請(qǐng)求的內(nèi)容代碼格式都差不多的話趾疚。我們就可以在app.js中寫一個(gè)公共代碼胁编,供全局使用亩冬。在app.js中酵幕,同樣有的全局變量 App<IAppOption>({??globalData:?{????cityname:""??},芬迄。能搞供給各個(gè)頁(yè)面之間傳遞參數(shù)又厉。所以在輪播圖中的數(shù)據(jù)請(qǐng)求我們就封裝到了http這個(gè)函數(shù)之中


??onLoad()?{


????//?獲取app.js封裝的網(wǎng)絡(luò)請(qǐng)求發(fā)現(xiàn)報(bào)錯(cuò)WAServiceMainContext.js?t=wechat&s=1695694252907&v=3.1.1:1?TypeError:?Cannot?read?property?'setData'?of?undefined

????//?app.http(host+bannerurl,"bannerArr")

????app.http(host+bannerurl,this,'bannerArr');

????app.http(host+indexUrl,this,'listArr');

????//?this.http(host+indexUrl,"listArr")

關(guān)于 用http? ? ?傳遞參數(shù)我們也需要注意 一點(diǎn)的是關(guān)于this這個(gè)頁(yè)面的全局嘲碧。在用this.setdata時(shí)稻励,所以我們?cè)赼pp.js中定義的 http(url,that,arr)這里的that就是this .而在js頁(yè)面中傳入的參數(shù)為this賦值給了that..要在頁(yè)面中使用app.js應(yīng)該如此定義 const?app?=?getApp()

還有若要在配一些公共屬性如下圖。也可在util中配置呀潭,使用方法 const?{host,bannerurl,indexUrl}=require('../../utils/commn/config.js')

關(guān)于跳轉(zhuǎn)的話 ?goodtail(e){????console.log(e)????wx.navigateTo(??????{url:"../iindexdetail/indexdetail?id="+e.currentTarget.dataset.id}????)??},

可以在wxml中直接使用naviga跳轉(zhuǎn)钉迷。也能用點(diǎn)擊事件進(jìn)行跳轉(zhuǎn)。钠署,而這里使用了點(diǎn)擊事件跳轉(zhuǎn)糠聪。并設(shè)置了data-id傳遞參數(shù)給事件用e來(lái)實(shí)現(xiàn)。后面發(fā)起請(qǐng)求把id傳到另外一個(gè)頁(yè)面谐鼎。如圖舰蟆。通過(guò)onload的opinion獲取

?<view?class="list"?wx:for="{{listArr}}"?wx:key="index"?bind:tap="goodtail"?data-id="{{item.id}}">


然后下面要注意的就是css的樣式問(wèn)題趣惠。關(guān)于flex布局,關(guān)于位置身害,關(guān)于絕對(duì)定位相對(duì)定位味悄。關(guān)于外距離和內(nèi)距離。在不清楚時(shí)用border把邊框標(biāo)出來(lái)塌鸯。然后還有一個(gè)問(wèn)題是圖片不能夠撐滿整個(gè)容器侍瑟,那么請(qǐng)?jiān)O(shè)置 image{??width:?100%;??height:?125%;}

關(guān)于文字對(duì)齊請(qǐng)用align .還有文字溢出



關(guān)于輪播圖還有的就是下面的3/5的設(shè)置

??//?輪播觸發(fā)--------------js

??swiperchange(e){

????this.setData({

??????currrentIdex:e.detail.current

????})}



html

??<swiper?class="banner"??indicator-color="black"?indicator-active-color="white"?circular="true"??bindchange="swiperchange"?autoplay?>

這里有個(gè)bindchange的函數(shù)來(lái)監(jiān)控輪播圖發(fā)生更改時(shí)候的事件參數(shù)id

?<view?class="biaodi">{{currrentIdex+1}}/{{bannerArr.length}}</view>


下面是進(jìn)入了詳細(xì)頁(yè)面。先是使用到showtoastonLoad(opnion)?{

//?網(wǎng)絡(luò)請(qǐng)求的接口id和數(shù)據(jù)

????console.log(opnion.id)?

?????wx.showLoading(

??????{title:"數(shù)據(jù)拼命加載中",

??????duration:500

??????}

????)???

來(lái)為我們展示數(shù)據(jù)正在加載中丙猬。而當(dāng)用wx.request請(qǐng)求完數(shù)據(jù)再用complete來(lái)最后加載數(shù)據(jù)

然后使用app.htt請(qǐng)求數(shù)據(jù)app.http(host+indexDetail+"id="+opnion.id,this,'info');

我們還要實(shí)現(xiàn)的是在導(dǎo)航欄實(shí)現(xiàn)一個(gè)加載動(dòng)畫 wx.showNavigationBarLoading();涨颜。就是這一部分

而且還要實(shí)現(xiàn)更改導(dǎo)航欄文字的功能?。我們已經(jīng)在app.js的函數(shù)中使用了這個(gè)功能

??wx.setNavigationBarTitle({

??????????title:res.data[0].title


下面來(lái)到食物館這個(gè)頁(yè)面

同理我們先把這個(gè)導(dǎo)航欄的頁(yè)面更改一下????wx.setNavigationBarTitle({

??????title:"食療館"

后面的css布局


.fenlei{

??//?border:?1rpx?red?solid;

??display:?flex;

?flex-wrap:?wrap;

??padding:?10rpx;

??justify-content:?space-around;

position:?absolute;

top:?9%;

flex-direction:?row;

//?margin:?auto;

}

.fenlei-item?image{

??width:50rpx;

??height:?50rpx;

}

.fenlei-item?{

??//?border:?1rpx?red?solid;

??width:70rpx;

??height:70rpx;

??margin-left:50rpx;

??margin-right:?50rpx;

??font-size:?9rpx;

??margin-top:?20rpx;

??font-size:?20rpx;

??text-align:?center;

請(qǐng)注意flex-wrap?是一個(gè)CSS屬性茧球,用于確定當(dāng)flex項(xiàng)目超出其容器的寬度時(shí)庭瑰,它們是否應(yīng)該換行。它與容器元素上的?display: flex?或?display: inline-flex?屬性一起使用抢埋。flex-wrap?屬性接受三個(gè)值:1.?nowrap:這是默認(rèn)值弹灭。它表示flex項(xiàng)目不會(huì)換行,即使它們溢出容器揪垄,也會(huì)在單行中顯示穷吮。2.?wrap:這個(gè)值允許flex項(xiàng)目在需要時(shí)換行到多行。換行發(fā)生在第一行填滿后饥努,后續(xù)項(xiàng)目會(huì)放置在新的行上酒来。3.?wrap-reverse:這個(gè)值與?wrap?類似,但它以相反的順序換行肪凛。換行從容器的底部或右側(cè)開始堰汉,并向上或向左移動(dòng)。


在這里我們還實(shí)現(xiàn)了對(duì)模板的使用伟墙。因?yàn)閷?duì)于有的html樣式和css樣式都是一樣的翘鸭,可以重復(fù)使用。那么這個(gè)時(shí)

候我們直接建造一個(gè)文件夾來(lái)存儲(chǔ)我們的模板戳葵。

css引入的寫法為 @import?'../templates/foolist/foodlist.wxss';

在html中為 </view><view></view><import?src="../templates/foolist/foodlist.wxml"/><block?wx:for="{{listArr}}"?wx:key="index">????<template?is="foodlist"?data="{{...item}}"/></block><view?class="more">{{moreinfo}}</view>

請(qǐng)注意這里的問(wèn)題...item為展開列表就乓。如果不需展開請(qǐng)直接用item.而在模板文件中

<template?name="foodlist1">

??<view?class="shop-info">

??<view?class="shop-image">

??<image?src="{{item.pic}}"?mode=""/>

????</view>

??<view?class="shop-text">

????<view?class="title">{{item.name}}</view>

????<view?class="detail">{{item.description}}</view>

????<view?class="other">

??????<view?class="money">${{item.price}}</view>

??????<view?class="num">{{item.buynum}}人付款</view>

????</view>

??</view>

</view>

</template>

通過(guò)template的名字的不同可以定義多個(gè)模板{{item.buynum}},{{item.name}}必須為item中擁有的鍵才能識(shí)別到


我們?cè)谶@里還實(shí)現(xiàn)了下拉刷新的功能拱烁。在使用之前需要到app.json中的window中開啟 ??"window":?{????"backgroundTextStyle":?"light",????"navigationBarBackgroundColor":?"#518890",????"navigationBarTitleText":?"食療坊",????"navigationBarTextStyle":?"black",????"enablePullDownRefresh":?true??},enable為true

對(duì)于這一部分

圖片

并不是請(qǐng)求得來(lái)生蚁。而同樣是在utli.js中配置戏自。

眾所都知,我們?cè)趆tml中不能夠使用js代碼志衣,但能夠使用wxss

這個(gè)使用為<wxs?src="../../utils/str.wxs"?module="tools"?/>

再讓我們回到下拉刷新屯援。可在監(jiān)控函數(shù)中定義??onPullDownRefresh()?{

????console.log("下拉刷新數(shù)據(jù)");

????//?下拉更新數(shù)據(jù)??功能1.下拉重新請(qǐng)求接口2請(qǐng)求上海的數(shù)據(jù)

????wx.request({

??????url:?host+foodlist,

??????data:{

????????city:"上海",

????????page:1

??????},

??????success:(res)=>{

????????this.setData({

??????????listArr:res.data.data.result,

??????????num:1

????????})

????????console.log(res.data,"更多數(shù)據(jù)");




??????}

????})

??},?*?頁(yè)面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動(dòng)作下拉刷新,要到頁(yè)面的json中設(shè)置background顏色

{

??"usingComponents":?{},

??"backgroundColor":?"#ff7695",

??"onReachBottomDistance":20

}

onReachBottomDistance為觸底事件

??onReachBottom()?{

????this.data.num++;

????console.log("加載更多數(shù)據(jù)",this.data.num)

????//?請(qǐng)求數(shù)據(jù)的接口

????wx.request({

??????url:?host+foodlist,

??????data:{

????????city:this.data.location,

????????page:this.data.num

??????},

??????success:(res)=>{

????????if?(res.status==200)?{

??????????console.log(res.data)

??????????????this.setData({

??????????listArr:this.data.listArr.concat(res.data.data.result)})

??????????//?如何把data里面數(shù)組的數(shù)據(jù)和新請(qǐng)求的數(shù)組數(shù)據(jù)合并

????????}?else?{

??????????console.log("沒有更多數(shù)據(jù)了")

??????????this.setData({

????????????moreinfo:"我是有底線的"

??????????})


????????}


????????//

????????console.log(res);



??????}

然后我們實(shí)現(xiàn)搜索框的請(qǐng)求功能狞洋。我們使用??????<navigator?url="../diinwei/diinwei">{{location}}</navigator>

????</view>

????<navigator?class="search"?url="../search/search?cityname={{location}}">?請(qǐng)輸入你想要的內(nèi)容

????<!--?<input?type="text"?placeholder="請(qǐng)搜索你喜歡的"?bindinput="search"/>?這里能夠使用兩種方式-->


????</navigator>

??</view>

來(lái)跳轉(zhuǎn)到另一個(gè)頁(yè)面

找到搜索的接口绿店,把返回的數(shù)據(jù)套子在模板上

搜索功能由input綁定事件實(shí)現(xiàn)<view?class="header">

<!--?用戶輸入內(nèi)容吉懊,搜索內(nèi)容,顯示數(shù)據(jù)惕它,事件?input組件?bindinput?-->

??<input?type="text"?focus="true"?placeholder="請(qǐng)輸入你喜歡的內(nèi)容"?bindinput="getinputVal"/>

</view>

然后再到j(luò)s中定義函數(shù)

getinputVal(e){

??console.log(e.detail);

if?(e.detail.value)?{

??wx.request({

????url:host+searchurl,

????data:{

??????city:this.data.cityName,

??????name:e.detail.value

????},

????success:(res)=>{

??????console.log(res.data);

??????console.log(res.data.data,"dsfwsedf")

??????if?(res.data.status==200)?{

????????this.setData({

??????????liistArr:res.data.data

????????})

??????}

????}

??})

}

else

{

??console.log('輸入內(nèi)容不能為空');

??//清空數(shù)據(jù)

??this.setData({

????list:[]

??})

}},

實(shí)現(xiàn)接口數(shù)據(jù)請(qǐng)求返回


請(qǐng)注意在這塊的bug就是this.setdata的異步返回不會(huì)返回?cái)?shù)據(jù)废登,只有object返回


還有要獲取定位權(quán)限的堡距。請(qǐng)?jiān)赼pp.json中的window中添加以下代碼??"requiredPrivateInfos":?["getLocation",?"chooseLocation",?"chooseAddress"],

??"permission":?{

????"scope.userLocation":?{

??????"desc":?"你的位置信息將用于小程序位置接口的效果展示"?

????}},

而后用按鈕綁定函數(shù)getLocation(){

????wx.getLocation({

??????success:?function(res)?{

????????console.log(host+locaation);//longitude???latitude

????????//http://iwenwiki.com:3002/api/lbs/location?latitude=39.90&longitude=116.4

????????wx.request({

??????????url:?'http://iwenwiki.com:3002/api/lbs/location',

??????????data:{

????????????latitude:?res.latitude,

????????????longitude:?res.longitude

??????????},

??????????success:result=>{

????????????console.log(result);

????????????var?citys?=?result.data.result.ad_info.city;

????????????var?cityName?=?citys.slice(0,?citys.length-1);

????????????console.log(cityName);

????????????//?wx.reLaunch({??給全局變量

????????????console.log(app);

????????????app.globalData.cityname=cityName;????

????????????????wx.switchTab({

url:"../foodcare/foodcare"})


在這里的跳轉(zhuǎn)方法有幾種兆蕉,請(qǐng)注意

1?wx.switchTab(

2wx.relunch

3wx.navigator

對(duì)于更改頁(yè)面的cityname.返回的數(shù)據(jù)要將其cityName賦值給全局變量∫壮恚或用navigator攜帶參數(shù)包蓝,或用本地存儲(chǔ)?wx.setStorageSync('cityName',?citys);

這里有個(gè)bug测萎,無(wú)法點(diǎn)擊后返回

得重新刷新。不過(guò)可以在外部定義個(gè)全局變量

然后再在點(diǎn)擊定位和熱門城市的時(shí)候分別改變

再到這里使用if的判斷語(yǔ)句

???if?(app.globalData.cityname?&&app.globalData.num==1)?{

??????this.setData({

????????location:app.globalData.cityname

??????}),

????????wx.request({

??????url:?'http://iwenwiki.com:3002/api/foods/list',

??????data:{

????????city:this.data.location,

????????page:?1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腕唧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颂暇,老刑警劉巖但惶,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異煌集,居然都是意外死亡捌省,警方通過(guò)查閱死者的電腦和手機(jī)苫纤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門卷拘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祝高,“玉大人,你說(shuō)我怎么就攤上這事乍赫÷襟。” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵改鲫,是天一觀的道長(zhǎng)像棘。 經(jīng)常有香客問(wèn)我壶冒,道長(zhǎng),這世上最難降的妖魔是什么避除? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任胸嘁,我火速辦了婚禮性宏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毫胜。我一直安慰自己,他們只是感情好荐吉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布样屠。 她就那樣靜靜地躺著,像睡著了一般悦穿。 火紅的嫁衣襯著肌膚如雪业踢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天瞬沦,我揣著相機(jī)與錄音负蠕,去河邊找鬼遮糖。 笑死叠赐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赛不。 我是一名探鬼主播罢洲,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼殿较!你這毒婦竟也來(lái)了桩蓉?” 一聲冷哼從身側(cè)響起院究,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤本涕,失蹤者是張志新(化名)和其女友劉穎菩颖,沒想到半個(gè)月后对供,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹅髓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年窿冯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了确徙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芜赌,死狀恐怖伴逸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洲愤,我是刑警寧澤顷锰,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布官紫,位于F島的核電站,受9級(jí)特大地震影響悼吱,放射性物質(zhì)發(fā)生泄漏良狈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一遇西、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洲敢,春花似錦茄蚯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)癌椿。三九已至,卻和暖如春踢俄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫡锌。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工世舰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留槽卫,地道東北人胰蝠。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓茸塞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钾虐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子效扫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容