小程序中的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 的相关文章

  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • “单体”是什么意思?

    我在课堂上看到过它 我怀疑这意味着该类可以被分解为逻辑子单元 但我找不到一个好的定义 你能举一些例子吗 谢谢您的帮助 编辑 我喜欢聪明的回复 但我显然指的是软件上下文中的 整体 我了解巨石 巨石 支石墓以及所有与石头相关的背景 哎呀 我的国
  • Python:在方法内部时,类属性是否等同于局部变量?

    在Python中 我知道查找本地范围的变量比查找全局范围的变量要快得多 所以 a 4 def function for x in range 10000
  • 如何创建和使用类箭头运算符? [复制]

    这个问题在这里已经有答案了 因此 在到处研究之后 我似乎找不到如何创建类箭头运算符 即 class Someclass operator gt 我只需要知道如何使用它并正确使用它 它的输入是什么 它返回什么 我如何正确地声明 原型化它 运算
  • 类中的易失性变量:“‘易失性’之前预期有非限定 ID”?

    我有两个static volatile我的类中定义的变量ADC 该类写为 裁剪以节省空间 pragma once include PeriodicProcess PeriodicProcess h include
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • Typescript 继承:扩展基类对象属性

    当扩展一个类时 我可以轻松地向它添加一些新属性 但是 如果当我扩展基类时 我想向基类的对象 简单对象的属性 添加新属性怎么办 这是一个带有一些代码的示例 基类 type HumanOptions alive boolean age numb
  • 当类的任何属性被修改时,类如何运行某些函数?

    是否有一些通用方法可以让类在以下情况下运行函数 any它的属性被修改了吗 我想知道是否可以运行某些子进程来监视类的更改 但也许有一种方法可以继承class并修改一些on change函数是 Python 类的一部分 有点像默认的 repr
  • C# 中的 .class(在 Java 中使用)相当于什么

    在爪哇中 TokenStream my stream analyser exclude tokenStream fieldName my reader TermAttribute my token TermAttribute getAttr
  • 将文本文件扫描到对象数组中

    我有一个逗号分隔的文本文件 其信 息格式如下 名字 姓氏 餐1 餐2 餐3 餐4 每个新学生都在新的一行 我有以下学生对象 public class Student private String first null private Str
  • 为什么快速调用时Python类的id不唯一?

    我正在Python 3 3 3 中做一些事情 我遇到了一些让我困惑的事情 因为据我了解 类每次被调用时都会获得一个新的id 假设您在某个 py 文件中包含以下内容 class someClass pass print someClass p
  • 了解 self 和 cls 之间的区别以及它们是否引用相同的属性

    我试图了解两者之间是否存在差异self and cls但我正在挣扎 尽管存在很多关于这个话题的讨论 例如 class maclass A class method def init self self B instance method d
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 创建一个行为类似于任何变量但具有更改/读取回调的类

    我想创建一个类 其行为类似于 python 变量 但在更改 读取 变量 时调用一些回调函数 换句话说 我希望能够按如下方式使用该类 x myClass change callback read callback 将 x 定义为 myclas
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • 多次重定义错误

    在了解了有关类和指针的更多信息后 我重构了一个程序并删除了超过 200 行代码 在此过程中创建了另外两个类 Location and Piece 问题是 在编译完所有内容后 链接器抱怨构造函数Piece被定义了多次 有很多错误 In fun
  • 不能从模板 C++ 类继承[重复]

    这个问题在这里已经有答案了 我不知道这里出了什么问题 也许有人可以帮助我 我想继承我的新班级MyDictionary来自模板抽象类dictionary 我有这样的代码 字典 h ifndef UNTITLED CPP DICTIONARY
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def

随机推荐

  • 异常链的解释与使用

    目录 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