最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

微信小程序:a=b===c,自己項目經驗的Q&A,點贊數界面和數據庫同步更新【詩書畫唱】

2021-06-09 14:28 作者:詩書畫唱  | 我要投稿

目錄

例子1:實現電影組件

sentence

常常用上讓內容等等沿主軸垂直水平居中的CSS樣式



例子2:實現獲取的點贊的數據是動態(tài)的,是實時更新,從數據庫中拿的(實現數據庫和界面的點贊同步更新)

models文件夾下的js文件一般是寫ajax的封裝的



例子3:實現期刊號組件epsoide



常常可以用display:flex ; flex-direction:column實現“豎向”的“列”的排列效果(其實我認為,很多布局的話,實在不行的時候,可以用上position定位,比如相對定位,絕對定位等等,也用上彈性盒子)

episode


例子4:例子1到例子3的代碼

沒有提到的代碼要么就是自己可以生成的代碼,要么就是以前的專欄中講過的代碼


index.json中的代碼基本都是自己生成的,基本一樣是

{

??"component":?true,

??"usingComponents":?{}

}

父組件就是在index.json中聲明組件后在wxml文件中調用

?比如例子中的 pages/classic/index.json


{

??"usingComponents":?{

????"cmp-like":"/components/like/index",

????"cmp-movie":"/components/classic/movie",

????"cmp-epsoide":"/components/epsoide"

??}

}


運行效果

例子5:注意事項(項目經驗之遇到的問題和我是怎么解決問題的)

Q:解決TypeError:?callback?is?not?a?function的報錯

Q:沒有觸發(fā)同個組件文件夾下index.js中聲明的onLike事件

Q:a=b==c怎么運算的

Q:點擊點贊按鈕時,數據庫點贊數加2,取消點贊按鈕時數據庫點贊數減2是什么原因導致這種bug?

Q:status = status === 'like' ? 1 : 0;是不是寫多余了,有沒有別的寫法?

A:目前我嘗試了,status = status === 'like';和status == 'like' ? status =1 : status =0;和status = status === 'like' ? 1 : 0;的效果是一樣的。暫時我認為是寫多余了。status = status === 'like' ? 1 : 0;可以理解成status = (status === 'like' ? 1 : 0);

C語言中a=b==c這個式子相當于先算b==c,若二者相等,則將1賦值給a,否則將0賦值給a,那么我個人推理js中a=b===c這個式子相當于先算b===c,若二者相等,則將1賦值給a,否則將0賦值給a




例子1:實現電影組件


sentence是關于格言警句的

sentence

音譯:升騰 死

注冊組件

常常用上讓內容等等沿主軸垂直水平居中的CSS樣式






常常用rpx,display:flex的彈性布局相關的設置

例子2:實現獲取的點贊的數據是動態(tài)的,是實時更新,從數據庫中拿的(實現數據庫和界面的點贊同步更新)

models文件夾下的js文件一般是寫ajax的封裝的

以上我們就實現了“八”中的功能

例子3:實現期刊號組件epsoide



常??梢杂胐isplay:flex ; flex-direction:column實現“豎向”的“列”的排列效果(其實我認為,很多布局的話,實在不行的時候,可以用上position定位,比如相對定位,絕對定位等等,也用上彈性盒子)

episode

音譯:愛 破誒 搜的

例子4:例子1到例子3的代碼


//?components/classic/movie/index.js

Component({

??/**

???*?組件的屬性列表

???*/

??properties:?{

????content:String,

????img:String,

??},


??/**

???*?組件的初始數據

???*/

??data:?{

????icon:?'./images/movie@tag.png'

??},


??/**

???*?組件的方法列表

???*/

??methods:?{


??}

})

<!--components/classic/movie/index.wxml-->

<view?class="container">

????<image?src="{{img}}"?class="img"/>

????<image?src="{{icon}}"?class="tag"/>

????<text?class="content">{{content}}</text>

</view>

<!--components/classic/movie/index.wxml-->

<view?class="container">

????<image?src="{{img}}"?class="img"/>

????<image?src="{{icon}}"?class="tag"/>

????<text?class="content">{{content}}</text>

</view>




/*?components/classic/movie/index.wxss?*/

.container?{

??display:?flex;

??flex-direction:?column;

??align-items:?center;

}

.tag{

??width:?46rpx;

??height:?142rpx;

??position:?relative;

??right:?310rpx;

??bottom:?58rpx;

}

.img?{

??width:?750rpx;

??height:?500rpx;

}

.content?{

??font-size:?36rpx;

??max-width:?550rpx;

}

index.json中的代碼基本都是自己生成的,基本一樣是

{

??"component":?true,

??"usingComponents":?{}

}

<!--components/epsoide/index.wxml-->

<view?class="container">

??<view?class="index-container">

????<text?class="plain">No.</text>

????<text?class="index">08</text>

????<view?class="line"></view>

??</view>

??<view?class="date-container">

????<text?class="month">六月</text>

????<text?class="year">2021</text>

??</view>

</view>




/*?components/epsoide/index.wxss?*/

.container?{

??display:?inline-flex;

??height:?60rpx;

??flex-direction:?row;

}

.plain?{

??font-size:?32rpx;

}

.index?{

??font-size:?60rpx;

??line-height:?60rpx;

??font-weight:?800;

??margin-right:?14rpx;

}


.index-container?{

??display:?flex;

??flex-direction:?row;

??align-items:?baseline;

}

.date-container?{

??display:?flex;

??flex-direction:?column;

??margin-top:?6rpx;

}


.month?{

??font-size:?24rpx;

??line-height:?24rpx;

}


.year?{

??font-size:?20rpx;

}


.line?{

??height:?44rpx;

??border-left:?1px?solid?black;

??margin-right:?14rpx;

}

//?components/like/index.js

Component({

??/**

???*?組件的屬性列表

???*/

??properties:?{

????//如果不聲明變量數據類型,那么數據的內容可能無法在別的文件中調用

????count:?Number,

????like:?Boolean,

????//自己寫的代碼?START

????//?bookImage:String

????//自己寫的代碼?END

??},


??/**

???*?組件的初始數據

???*/

??data:?{

????yesSrc:?'/components/like/images/like.png',

????noSrc:?'/components/like/images/like@dis.png',

??},


??/**

???*?組件的方法列表

???*/

??methods:?{

????onLike(){

??????let?count?=?this.properties.count

??????let?like?=?this.properties.like

//自己寫的代碼?START

//?let?bookImage=?this.properties.image

//自己寫的代碼?END

??????count?=?like???count?-?1?:?count?+?1

??????//更新組件的狀態(tài)

??????this.setData({

????????count,

????????like:?!like,

????????//自己寫的代碼?START

????????//?bookImage:bookImage

????????//自己寫的代碼?END

??????})


//關于數據庫和頁面的點贊數同步更新的部分?START

?//觸發(fā)綁定在like組件上的自定義事件

??????//1、需要觸發(fā)的自定義事件的名字

??????//2、自定義事件需要傳遞的數據對象

??????//3、配置事件的屬性

??????this.triggerEvent('myLike',{

????????state:?this.properties.like???'like'?:?'cancel',

????????nums:?this.properties.count

??????},{})


//關于數據庫和頁面的點贊數同步更新的部分?END


????}

??}

})


<!--components/like/index.wxml-->

<view?class="container"?bind:tap="onLike">

????<image?src="{{like?==?'1'???yesSrc?:?noSrc}}"?/>

????<text>{{count}}</text>

????

????

</view>

<!--?<image?src="{{bookImage}}"?/>

<text>{{yesSrc}}1</text>

<text>{{bookImage}}1</text>?-->


/*??自己寫的代碼?START*/


.container{

float:right;


}


/*??自己寫的代碼?END*/

//?pages/classic/index.js

import?ClassicModel?from?'../../models/classic.js'

??//關于數據庫和頁面的點贊數同步更新的部分?START

import?config?from?'../../config.js'

??//關于數據庫和頁面的點贊數同步更新的部分?END

const?classicModel?=?new?ClassicModel()

Page({


??/**

???*?頁面的初始數據

???*/

??data:?{

????classicData:?null

????

??},


??/**

???*?生命周期函數--監(jiān)聽頁面加載

???*/

??onLoad:?function?(options)?{

????classicModel.getLatest(data?=>?{

??????console.log("pages/classic/index.js中打印的數據:",data)

??????//關于數據庫和頁面的點贊數同步更新的部分?START

??????//?console.log(data)

??????//修改image屬性的內容:

??????data.image?=?config.img_url?+?data.image

??????//關于數據庫和頁面的點贊數同步更新的部分?END

??????//更新數據

??????this.setData({

????????classicData:?data

??????})

????})

??},


//關于數據庫和頁面的點贊數同步更新的部分?START

??onLike(e){

????//更新點贊的狀態(tài)

????classicModel.like({

??????status:?e.detail.state,

??????index:?this.data.classicData.index,

??????nums:?e.detail.nums

????})

??},

//關于數據庫和頁面的點贊數同步更新的部分?END


??/**

???*?生命周期函數--監(jiān)聽頁面初次渲染完成

???*/

??onReady:?function?()?{


??},


??/**

???*?生命周期函數--監(jiān)聽頁面顯示

???*/

??onShow:?function?()?{


??},


??/**

???*?生命周期函數--監(jiān)聽頁面隱藏

???*/

??onHide:?function?()?{


??},


??/**

???*?生命周期函數--監(jiān)聽頁面卸載

???*/

??onUnload:?function?()?{


??},


??/**

???*?頁面相關事件處理函數--監(jiān)聽用戶下拉動作

???*/

??onPullDownRefresh:?function?()?{


??},


??/**

???*?頁面上拉觸底事件的處理函數

???*/

??onReachBottom:?function?()?{


??},


??/**

???*?用戶點擊右上角分享

???*/

??onShareAppMessage:?function?()?{


??}

})


{

??"usingComponents":?{

????"cmp-like":"/components/like/index",

????"cmp-movie":"/components/classic/movie",

????"cmp-epsoide":"/components/epsoide"

??}

}

<!--pages/classic/index.wxml-->

<cmp-epsoide></cmp-epsoide>

<!--?下面的話就是調用了點贊的組件?-->

<!--?<div>?-->

<cmp-like?count="{{classicData.fav_nums}}"?

????like="{{classicData.like_status}}"?></cmp-like>

????<!--?bookImage="{{classicData.image}}"?-->

????<!--?<text>{{classicData.image}}</text>?-->

????<!--?<image?src="{{classicData.image}}"/>

</div>?-->


<cmp-movie?content="{{classicData.content}}"?

????img="{{classicData.image}}"></cmp-movie>


//utils/http.js

export?default?class?Http?{

??ajax({url,data?=?{},method?=?'get',callback}){

????wx.request({

??????url,

??????data,

??????method,

??????success:?res?=>?{

????????//獲取請求的狀態(tài)碼:200,404,500

????????let?code?=?res.statusCode.toString()

????????//判斷code是否是以2開頭的,如果以2開頭的才可以調用回調函數

????????if(code.startsWith('2'))?{

??????????callback(res.data)

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

??????????//彈出一個警告框

??????????this._showErr(code)

????????}???????

??????},

??????fail:?err?=>?{

????????this._showErr(err.errMsg)

??????}

????})

??}

??//私有的方法

??_showErr(msg){

????wx.showToast({

??????title:?`錯誤代碼:${msg}`,

??????icon:?'none',

??????duration:?2000

????})

??}

}

//config.js

//用來存放常量的文件

export?default?{

??base_url:?'http://127.0.0.1:9001/',

??img_url:?'http://127.0.0.1:9001/public/images/'

}


運行效果


例子5:注意事項(項目經驗之遇到的問題和我是怎么解決問題的)


Q:解決TypeError:?callback?is?not?a?function的報錯


A://解決TypeError:?callback?is?not?a?function的報錯?START

??????????callback?&&?callback(res.data)

??//解決TypeError:?callback?is?not?a?function的報錯?END

Q:沒有觸發(fā)同個組件文件夾下index.js中聲明的onLike事件

A:在同個組件文件夾下index.wxml中,沒用bind:myLike="onLike"綁定onLike事件

Q:a=b==c怎么運算的

Q:點擊點贊按鈕時,數據庫點贊數加2,取消點贊按鈕時數據庫點贊數減2是什么原因導致這種bug?

A:檢查后臺和前臺代碼,是不是傳訪問路徑后,重復處理了點贊數的加減,如果前臺代碼處理過了點贊數的加減,那么后臺處理點贊數的加減的部分就要注釋掉

前臺
后臺

Q:status = status === 'like' ? 1 : 0;是不是寫多余了,有沒有別的寫法?

A:目前我嘗試了,status?= status === 'like';和status == 'like' ? status =1 : status =0;和status = status === 'like' ? 1 : 0;的效果是一樣的。暫時我認為是寫多余了。status = status === 'like' ? 1 : 0;可以理解成status = (status === 'like' ? 1 : 0);

C語言中a=b==c這個式子相當于先算b==c,若二者相等,則將1賦值給a,否則將0賦值給a,那么我個人推理js中a=b===c這個式子相當于先算b===c,若二者相等,則將1賦值給a,否則將0賦值給a




微信小程序:a=b===c,自己項目經驗的Q&A,點贊數界面和數據庫同步更新【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
罗源县| 泾川县| 鄂托克前旗| 罗源县| 喜德县| 青田县| 镇康县| 东港市| 绵阳市| 高邮市| 宁陵县| 景谷| 吉林市| 闽清县| 金塔县| 资阳市| 唐海县| 石阡县| 嘉禾县| 伊宁市| 洛浦县| 雅江县| 民丰县| 西昌市| 黄大仙区| 马边| 清徐县| 塔河县| 宁强县| 靖宇县| 阿鲁科尔沁旗| 深水埗区| 竹溪县| 清远市| 化隆| 呼图壁县| 黄冈市| 凭祥市| 荣成市| 滦南县| 壤塘县|