小程序中的ES6 Class
来源:互联网 发布:python 获取日期 编辑:程序博客网 时间:2024/06/13 06:03
movie-detail.js原始写法
var app = getApp();//引用var util = require('../../../utils/utils.js')//引用数据请求的公共函数Page({ //初始化数据 data:{ movie:{} },//es6方式 module,class,promise,=> onLoad:function(options){ var movieId = options.id; var url = app.globalData.doubanBase+ "/v2/movie/subject/"+movieId;util.http(url,this.processDoubanData,"GET","json"); }, //数据处理函数 processDoubanData:function(data){ //对数据源判空 if(!data){ return; } //定义一个空的js对象(导演director)为什么单独处理director,因为数据这个地方总是为空,其他数据有地方为空时,也要做相应处理 var director = { avatar:"", name:"", id:"" } //数据容错 if(data.directors[0] !=null){ if(data.directors[0].avatars !=null){ director.avatar = data.directors[0].avatars.large } director.name = data.directors[0].name; director.id = data.directors[0].id; } var movie = { movieImg :data.images ? data.images.large:"", country:data.countries[0], title:data.title, originalTitle:data.original_title, wishCount:data.wish_count, commentCount:data.comments_count, year:data.year, generes:data.genres.join("、"), stars:util.convertToStarsArray(data.rating.stars), score:data.rating.average, director:director, casts:util.convertToCastString(data.casts), castsInfo:util.convertToCastInfos(data.casts), summary:data.summary } //数据绑定 this.setData({ movie:movie }) }, // 查看图片 viewMoviePostImg:function(event){ var src =event.currentTarget.dataset.src; wx.previewImage({ current: src, // 当前显示图片的链接,不填则默认为 urls 的第一张 urls: [src], success: function(res){ // success }, fail: function(res) { // fail }, complete: function(res) { // complete } }) }})
Es6写法,新建Movie.js类
var util = require('../../../../utils/utils.js');// 创建Movie对象class Movie { //构造函数 constructor(url) { this.url = url; } //定义两个成员变量getMovieData,processDoubanData getMovieData(cb) { this.cb = cb; util.http(this.url, this.processDouban.bind(this)); } processDoubanData(data) { if (!data) { return; } var director = { avatar: "", name: "", id: "" } //数据容错 if (data.directors[0] != null) { if (data.directors[0].avatars != null) { director.avatar = data.directors[0].avatars.large } director.name = data.directors[0].name; director.id = data.directors[0].id; } var movie = { movieImg: data.images ? data.images.large : "", country: data.countries[0], title: data.title, originalTitle: data.original_title, wishCount: data.wish_count, commentCount: data.comments_count, year: data.year, generes: data.genres.join("、"), stars: util.convertToStarsArray(data.rating.stars), score: data.rating.average, director: director, casts: util.convertToCastString(data.casts), castsInfo: util.convertToCastInfos(data.casts), summary: data.summary } this.cb(movie); }}//class对象是个模块,使用export把对象输出出去export{Movie}
movie-detail.js更改之后的代码
import {Movie} from 'class/Movie.js' //引入类var app = getApp();//引用Page({ //初始化数据 data:{ movie:{} },//es6方式 module,class,promise,=> onLoad:function(options){ var movieId = options.id; var url = app.globalData.doubanBase+ "/v2/movie/subject/"+movieId; var movie = new Movie(url); //class类Movie的方法getMovieData,接收一个回调函数,因为回调里面有http请求是异步的,所以要用这种方法 //假如回调是同步的,可以使用下面的方法直接取值 // var movieData= movie.getMovieData(); //function(movie)中的movie是getMovieData方法内处理过返回的movie var that =this; movie.getMovieData(function(movie){ that.setData({ movie:movie }) }) }, // 查看图片 viewMoviePostImg:function(event){ var src =event.currentTarget.dataset.src; wx.previewImage({ current: src, // 当前显示图片的链接,不填则默认为 urls 的第一张 urls: [src], }) }})
0 0
- 小程序中的ES6 Class
- es6中的class类
- es6中的class
- es6中的class类下
- ES6:JavaScript中的类Class
- ES6中的class创建类
- ES6 Class 中的 super 关键字
- es6 javascript中的class理解
- JavaScript 使用对象及ES6中的class
- ES6中的类(Class)的写法
- ES6--Class
- ES6 Class
- ES6--class
- ES6-class
- 【ES6】class
- es6 javascript的class类中的 get和set
- ES6语法中的let、const及class声明
- ES6 Class继承中super在不同场景中的用法
- s2-045分析
- Ruby语法解释:attr_reader,attr_writer和attr_accessor
- 把排序数组转换为高度最小的二叉搜索树
- 195. Tenth Line#1
- docker centos7 安装ssh
- 小程序中的ES6 Class
- scrapy实例 ----- 爬取小说
- 纪念一下,悄悄的给swoole捐助了50元
- 关于面试的一些零碎想法
- Programming Languages Supported by GCC(GCC 支持的编程语言)
- VM虚拟机下安装Centos7.0图文教程
- 1018. 锤子剪刀布 (20)
- spring mvc(别人的观点,参考)
- iOS 封装加载、提示窗progressHUD —— HERO博客