~~~
// pages/move/moremove/moremove.js
import utils from "../../../utils/utils";
var http = utils.http;
var star = utils.star;
const app = getApp();
const douban = app.globalData.doubanUrl;
Page({
/**
* 页面的初始数据
*/
data: {
start: 0,
// 定义movies的数据是否为空
isEmpty: true,
huan: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
wx.showLoading({
title: '正在加载...',
});
// console.log(options);
var title = options.title;
var type = options.type;
var url = douban + type;
var huan = wx.getStorageSync(type).huan;
// 没有数据 缓存为空 类型不一致
if (this.data.isEmpty == true && huan == false || huan == undefined) {
//
http(url, this.handleData);
} else {
// 获取缓存 设置缓存
var movies = wx.getStorageSync(type).movies;
var title = wx.getStorageSync(type).title;
this.setData({
movies,
title
})
wx.hideLoading();
}
/* 设置标题 */
wx.setNavigationBarTitle({
title
});
this.setData({
type,
})
},
handleData(res) {
var title = res.data.title;
var subjects = res.data.subjects;
var moviess = [];
var type = this.data.type
subjects.forEach(ele => {
var average = ele.rating.average;
var stars = star(ele.rating.stars);
var title = ele.title;
var imgUrl = ele.images.small;
var id = ele.id;
var temp = {
average,
stars,
title,
imgUrl,
id
};
// console.log(temp)
moviess.push(temp);
});
// isEmpty定义movies是否为空
if (this.data.isEmpty) {
this.setData({
movies: moviess,
title,
isEmpty: false,
huan: true
});
// 第一次加载了数据将数据设置在缓存
var huan = this.data.huan;
var movies = this.data.movies;
var title = this.data.title;
wx.setStorageSync(type, { movies, title, huan });
} else {
this.setData({
movies: this.data.movies.concat(moviess)
})
var huan = this.data.huan;
var movies = this.data.movies;
var title = this.data.title;
wx.setStorageSync(type, { movies, title, huan });
}
wx.hideLoading();
},
onReachBottom: function () {
var type = this.data.type;
this.data.start += 20;
var start = this.data.start;
var url = `${douban}${type}?start=${start}&count=20`;
console.log(url)
http(url, this.handleData);
//下拉触发加载
wx.showLoading({
title: "加载数据"
});
},
moveDetails(res) {
// console.log(res)
var id = res.currentTarget.dataset.id;
var title = res.currentTarget.dataset.title;
// console.log(title)
wx.navigateTo({
url: '/pages/move/movedetails/movedetails?id=' + id + "&title=" + title,
})
}
})
~~~
- 前期准备
- 软件安装配置
- 语法 以及 功能 的实现
- 小程序中的 轮播
- 翻转轮播
- 实现 跳转 页面
- 详谈 跳转页面
- for 循环 渲染 页面(重点)
- 点击 改变 元素内容
- 功能 封装(创建、使用 模板)(重点)
- js模块化(重点)
- if-else实现 三目运算
- 底部导航栏tabBar 实现
- 小程序中的 函数调用 方法
- 小程序中的 block 包裹元素
- 小程序中的 hover事件
- import 标签(重点)
- 其他
- 在本地模拟接口取数据
- 点击跳转 并将该元素的id一起传递给跳转的页面
- 点击详情页显示
- 点击事件(bindtap/catchtap)
- 图片的mode属性
- 跳转页面时实现顶部显示页面标题
- hello world
- 将豆瓣服务器接口设置在本地
- 组件
- 地图
- 下拉刷新
- 数据加载 loading...
- 动态设置导航(title设置)
- 实现js代码的模块化
- 传参
- 组件中的生命周期函数
- 实战
- 发送http请求
- 可用的豆瓣接口
- 处理豆瓣列表页的数据
- 从接口上取数据渲染到页面上1
- 从接口上取数据渲染页面实现瀑布流2
- 瀑布流
- 音乐播放
- 文章详情页
- 音乐播放组件
- 音乐播放 最终版
- 电影(封装取数据渲染)
- 分享与收藏
- 搜索框
- 将电影列表数据放缓存
- 零碎知识点
- 谈组件
- 请求封装 (重点)
- 实现简单需求的请求失败的封装
- 使用class实现显示各种错误信息
- 再次封装带class的请求实现改变里面给的url
- 使用promise 封装http
- promise
- generator
- 01.介绍
- 02. 基本
- 03. 实例
- 04.yield
- asyns
- 01. 介绍
- 02. 使用
- 03. 取豆瓣
- 子组件(模板文件)接收父组件传来的参数并改变其值
- 模块化
- 在模板中提取相同的部分behavior
- 字符串与数组之间的转换
- 子组件向父组件传参
- 谈 triggerEvent
- 整体展示
- 父组件向子组件传wxml (在两个组件比较相似的情况 定义卡 槽传 wxml)
- 传css (在父组件中定义子组件的样式)
- 使用wxs给wxml传js
- 点赞
- 小程序中的正则
- 组件中实现下拉刷新
- 用户授权
- 组件点击图片获取信息
- 说明
- 小程序上下滑动