小程序中的ES6 Class

2023-11-11

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],
    })
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序中的ES6 Class 的相关文章

随机推荐

  • 异常链的解释与使用

    目录 1 什么是异常链 2 异常链的使用场景 3 使用异常链的注意事项 1 什么是异常链 百度百科的解释 异常链是一种面向对象编程技术 指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式 深入理解Java核心技术 中的解释 异常链是
  • 使用Docker创建镜像的容器

    1 查看当前环境下的镜像 docker ps 2 创建docker镜像容器 例如 我要创建czy py3 6 pytorch1 0镜像对应的容器 raid raid home shanhui mrc是我本地文件的路径 workplace c
  • 机器学习笔记2:建立模型一般所需步骤

    目录 1 特征工程 2 抽样方式 2 1 随机抽样 2 2 分层抽样 3 交叉验证 4 微调模型 4 1 网格搜索 4 2 随机搜索 1 特征工程 特征工程是指对样本属性值的处理 对数值型属性值一般用标准化 以此来消除量纲的影响 对字符串或
  • 运算符“

    区别一 定义不同 和 都是表示 或 区别是 只要满足第一个条件 后面的条件就不再判断 而 要对所有的条件进行判断 区别二 与操作和或操作的区别 1 在Java程序中 使用与操作 要求所有表达式的判断结果都是TRUE 才为真 若有一个为FAL
  • 【华为OD机试真题2023B卷 JAVA&JS】猜密码

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 猜密码 知识点DFS搜索数组 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 小杨申请了一个保密柜 但是他忘记了密码 只记得密码都是数字 而且所有数字都是不重复的 请你根
  • C++中auto的使用

    1 C 中auto的使用 1 1auto简介 auto是一个C C 语言存储类型 仅在语句块内部使用 初始化可为任何表达式 其特点是当执行流程进入该语句块的时候初始化可为任何表达式 C语言中提供了存储说明符auto register ext
  • 3D动画animation

  • vite配置eslint

    一 安装依赖包 根据自己的包管理工具来进行包的下载安装 这里以pnpm为例 pnpm add babel eslint parser eslint vite plugin eslint D 注意 1 安装过程中 若需要告警缺少babel c
  • matlab脉冲压缩程序_脉冲压缩处理

    脉冲压缩指雷达在发射时采用宽脉冲信号 接收和处理回波后输出窄脉冲 脉冲压缩技术是匹配滤波理论和相关接收理论的一个很好的实际应用 很好地解决了这样的一个问题 在发射端发射大时宽 带宽信号 以提高信号的发射能量 而在接收端 将宽脉冲信号压缩为窄
  • Ant-Design modal对话框未打开时,无法通过uesRef获取modal内部元素DOM节点

    使用antd的modal对话框 想要通过uesRef获取modal内部dom节点时 需要注意 在未展开过modal前 无法获取其内部dom节点 即使在组件已挂载时也一样 首先 使用modal对话框 并在其内部放置一个input框 通过ref
  • pandas提取mysql数据库,pandas数据保存至Mysql数据库

    pandas数据保存至Mysql数据库 import pandas as pd from sqlalchemy import create engine host 127 0 0 1 port 3306 db test user root
  • 神经网络硕士就业前景,神经网络就业怎么样

    想问一下学神经网络的研究生毕业的工作就业方向是哪些类 同声传译 同声传译员被称为 21世纪第一大紧缺人才 同传的薪金是按照小时和分钟来算的 现在的价码是每小时4000元到8000元 相关人士如是说 4年之后入驻中国和北京的外国大公司越来越多
  • 使用Redis实现主从复制,主机看不到从机slave连接信息(master_link_status显示为down)

    使用Redis实现主从复制 主机看不到从机slave连接信息 master link status显示为down 一 普通模式 使用命令slaveof lt 主机ip gt lt 主机端口号 gt 指定了从机 但在主机中使用info rep
  • 盘点Python爬虫中的常见加密算法,建议收藏!!

    相信大家在数据抓取的时候 会碰到很多加密的参数 例如像是 token sign 等等 今天小编就带着大家来盘点一下数据抓取过程中这些主流的加密算法 它们有什么特征 加密的方式有哪些等等 知道了这些之后对于我们逆向破解这些加密的参数会起到不少
  • 若依管理系统修改背景色

    前言 若依管理系统的背景色默认是白色的 我们想把它改成如上图的背景色 在哪里改呢 在如上图的main js里 框架引入了全局样式 在index scss中又引入了sidebar scss等文件 如上图 在sidebar scss里 main
  • 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现 排序 查找 数组 链表 栈 队列 树 递归 海量数据处理 图 位图 Java版数据结构 数据结构和算法作为程序员的基本功 一定得稳扎稳打的学习 我们常见的框架底层就是各类数据结构 例如跳表之于redis B 树之于m
  • 攻略|如何成为Moonbeam收集人

    Moonbeam与其他PoS机制EVM公链类似 仰赖节点的运营保持网络的顺利运行以及安全 Moonbeam作为同时兼容Substrate和以太坊API的开发平台 同以太坊主网相比仍存在差异 在Moonbeam的生态中 节点运营者被称为收集人
  • 以太坊源码学习(一)

    转载自 https blog csdn net karizhang article details 79110981 背景 geth源码一直在不断增加 优化 发展到现在已经非常庞大 第一次看geth源码 会有不小的难度 虽然如此 还是可以从
  • ajax让session丢失,在static资源里使用ajax请求session丢失?

    准备用express做一个登陆模块 前台是用react做的 我在submit按钮handle是这么写的 handleSubmit e e preventDefault fetch login method POST headers Cont
  • 小程序中的ES6 Class

    movie detail js原始写法 var app getApp 引用 var util require utils utils js 引用数据请求的公共函数 Page 初始化数据 data movie es6方式 module cla