### index-detail.js
#### 初始數據設置
```
const local = require("../../../data/local");
const app = getApp();
Page({
data: {
// 音乐的播放状态
isPlay: false,
collected: false,
shared:false,
},
onLoad: function (options) {
//聲明id存放options的id值,用以在postList中取到對應頁面的數據内容
var id = options.id;
var data = local.postList[options.id];
this.setData({
data,
postId: id,
music: local.postList[options.id].music
});
console.log(data)
```
#### 退出当前界面后再进入时的音乐播放状态监听
```
this.onMusic();
// 进入页面退出页面音乐播放按钮一致
if (app.globalData.g_isPlay && app.globalData.g_currentId == id) {
this.setData({
isPlay: true
});
}
```
#### 收藏设置
```
// 缓存
let allCollected = wx.getStorageSync('allCollected');
//有缓存取值就更新缓存,没有就设置缓存
if (allCollected) {
let storageCollected = allCollected[id];
if (storageCollected) {
//index-detail页面是每篇文章的详情页面,id值已经确定
this.setData({
collected: storageCollected
//将当前页面的收藏状态赋给collected
})
}
} else {
let allCollected = {
};
//如果没有缓存则先创建一个allCollected对象
allCollected[id] = false;
//将当前文章详情页面的收藏状态设置为未收藏
wx.setStorageSync('allCollected', allCollected);
//将定义的allCollected内容更新到缓存allCollected中去
}
},
```
#### 音乐播放状态具体函数
```
// 监听音乐播放
onMusic() {
var self = this;
//背景音樂播放則設置isPlay屬性值為true,g_isPlay屬性值為true,g_currentId存放當前模塊的id
wx.onBackgroundAudioPlay((result) => {
self.setData({
isPlay: true
});
app.globalData.g_isPlay = true;
app.globalData.g_currentId = self.data.postId;
});
//背景音樂暫停,同上設置相印屬性值
wx.onBackgroundAudioPause((result) => {
self.setData({
isPlay: false
})
app.globalData.g_isPlay = false;
app.globalData.g_currentId = null;
});
//背景音樂停止播放,即播放彈窗被關閉
wx.onBackgroundAudioStop((result)=>{
self.setData({
isPlay:false
});
app.globalData.g_isPlay = false;
});
},
```
#### 自定義播放音樂函數
```
// 点击音乐播放
playMusic() {
var self = this;
/*執行播放音樂函數時,如果isPlay值為true即正在播放,則執行stopBackgroundAudio()停止播放,更改相關參數值*/
if (this.data.isPlay) {
wx.stopBackgroundAudio();
this.setData({
isPlay: false
});
}
//如果沒有播放則調用playBackgroundAudio函數播放該音樂,找到該音樂的地址、標題,並更換封面圖片
else {
wx.playBackgroundAudio({
dataUrl: self.data.music.url,
title: self.data.music.title,
coverImgUrl: self.data.music.coverImgUrl
});
this.setData({
isPlay: true
});
}
},
```
#### 收藏设置
```
onCollect() {
var allCollected = wx.getStorageSync('allCollected');
//从缓存中获取allCollected的值
var storageCollected = allCollected[this.data.postId];
//找到对应文章的状态值存入自定义量storageCollected之中
storageCollected = !storageCollected;
//执行点击事件所以要进行storageCollected状态值变换以切换图片
allCollected[this.data.postId] = storageCollected;
//将取反后的新状态值写入对应的allCollected里
wx.setStorageSync("allCollected", allCollected);
//在缓存中写入更新后的数据
this.setData({
collected: storageCollected
})
//将当前页面的收藏状态赋给collected
},
```
#### 分享设置
```
onShare() {
wx.showActionSheet({
itemList: ["分享到微信", "分享到微博", "分享到朋友圈", "分享到Rela"],
itemColor: '#405f80',
//点击分享成功后shared状态改变,否则不改变
success: res => {
//此处写箭头函数那么下面this不用再定义成self
console.log(res.tapIndex)
this.setData({
shared: true
})
},
fail: err => {
this.setData({
shared: false
})
}
})
}
})
```
- 项目启动配置
- 01.欢迎页
- 03.点击图片切换——事件绑定bindtap、catchtap
- 04.底方分页切换tabBar
- 20.音乐播放
- 06.豆瓣电影列表
- 1.App
- 2.template
- 3.movies-detail 页面详情
- 组件
- 02.地图
- 05.轮播图swiper
- 07.点击预览图片previewImage结合scroll-view
- 11.web-page
- 14.form表单
- 08.头像图片更换chooseImage
- 09.上拉刷新OnReachBottom
- 10.使用缓存(收藏、分享状态)
- 12.导航条加载、页面加载、导航标题设置
- 13.弹出框
- 15.demo
- data
- local.js
- pages
- welcome(欢迎页)
- index
- index.wxml
- index.wxss
- index.js
- index-detail
- index-detail.wxml
- index-detail.wxss
- index-detail.js
- template
- yuedu-list.wxml
- yuedu-list.wxss
- map
- movies
- movies.wxml
- movies.wxss
- movies.js
- movies-grid
- movies-grid-template.wxml
- movies-grid-template.wxss
- movies-item
- movies-item-template.wxml
- movies-item-template.wxss
- movies-more
- movies-more.wxml
- movies-more.wxss
- movies-more.js
- movie-detail
- movie-detail.wxss
- movie-detail.wxml
- movie-detail.js
- star
- star-template.wxml
- star-template.wxss
- web-page
- web-page.wxml
- web-page.js
- post-img
- post-img.wxml
- post-img.js
- post-img.wxss
- 演员列表图
- 列表图.wxml
- 列表图.wxss
- 列表图.js
- utils
- utils.js
- app.js
- app.json
- app.wxss
- 16.事件冒泡
- 18.Tip
- 框架
- 17.模板
- 19.组件模板和样式(slot)
- component构造器
- 组件事件
- behaviors
- wxs
- HTTP封装
- models使用封装HTTP
- 更多有关promise封装的例子
- 生命周期
- 注意: