[TOC]
### 1. wxml (模板)
~~~
<view class="like" bind:tap="onLike">
<image src="{{like?yesSrc:noSrc}}" class="icon"></image>
<text>{{count}}</text>
</view>
~~~
### 2. js (模板)
~~~
// components/classic/like/index.js
Component({
/**
* 组件的属性列表
*/
properties: {
like:{
type:Boolean,
value:false
},
count:Number
},
/**
* 组件的初始数据
*/
data: {
yesSrc:'images/like.png',
noSrc:'images/unlike.png'
},
/**
* 组件的方法列表
*/
methods: {
onLike(){
var like = this.properties.like;
var count = this.properties.count;
if(like){
this.setData({
like:false,
count:count-1
})
}else{
this.setData({
like:true,
count:count+1
})
}
var behavior = this.data.like
this.triggerEvent('like',{
behavior
})
}
}
})
~~~
### 3. wxml(使用)
~~~
<v-like like="{{like}}" count="{{count}}" bind:like="onLike"></v-like>
~~~
### 4. js (使用)
~~~
onLoad: function (options) {
classicModel.getLatest(res => {
this.setData({
classic: res,
like:res.like_status,
count:res.fav_nums
})
})
},
onLike(e) {
var behavior = e.detail.behavior;
var id = this.data.classic.id;
var type = this.data.classic.type;
likeModel.getLike(behavior, id, type);
},
onPrev() {
this._updateData("previous");
},
onNext() {
this._updateData("next");
},
_updateData(nextOrprevious) {
classicModel.getClassic(this.data.classic.index,
nextOrprevious, res => {
/* 更新点赞的状态 */
likeModel.getLikeStatus(res.type,res.id,res=>{
this.setData({
like:res.like_status,
count:res.fav_nums
})
})
this.setData({
classic: res,
// 更新是否为第一期的状态
isFirst: classicModel.isFirst(res.index),
isLatest: classicModel.isLatest(res.index)
})
})
}
~~~
### 5. modeler (再次封装的模块)
~~~
import {HTTP} from "../utils/http";
class LikeModel extends HTTP{
getLike(behavior,id,type){
const url = behavior?"/like":"/like/cancel"
this.request({
url,
method:"POST",
data:{
art_id:id,
type
}
})
}
/* 获取期刊点赞的信息 */
getLikeStatus(type,id,callback){
this.request({
url:`/classic/${type}/${id}/favor`,
success:res=>{
callback(res);
}
})
}
}
export {LikeModel}
~~~
- 前期准备
- 软件安装配置
- 语法 以及 功能 的实现
- 小程序中的 轮播
- 翻转轮播
- 实现 跳转 页面
- 详谈 跳转页面
- 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
- 点赞
- 小程序中的正则
- 组件中实现下拉刷新
- 用户授权
- 组件点击图片获取信息
- 说明
- 小程序上下滑动