微信小程序的this和that的用法

微信小程序的this和that的用法,第1张

在微信小程序中,我们经常会使用this.setData来修改数据,但有时候发现,this拿不到,到底是为什么呢?

当我们通过wx.request请求网络数据成功后绑定数据时候报以下错误

这是睁孝因为this作用域指向问题 ,success函改掘数实际是一个闭包 , 无法直接通过this来核早核setData

方法一:保留this的副本that

方法二:回调函数使用函数声明(箭头函数)的写法

从上面情景中我们发现,问题主要出现在调用接口的回调函数中,所以我们在success或者fail回调函数中要setData的时候,就要选择其中一种方式来避免this丢失

在小程序的wxml文件中者闷唤添加如下代码:

<text>已经

{{d}}天{{h}}时{{m}}分{{s}}秒</text>

在小程序的js文件中添加如下代码:

Page({

    onLoad: function() {

        var that = this

        setInterval(function() {

            var t1 = new Date("2018/05/23 08:20:00")

            var t2 = new Date()

            var t = new Date(t2 - t1 + 16 * 3600 * 1000)

            that.setData({

                d: parseInt(t.getTime() / 1000 / 3600 / 24),

                h: t.getHours(),

           罩没     m: t.getMinutes(),

                s: t.getSeconds()

            })

        }, 1000)

    首凯}

})

data: {

class1: 'z1', //默认正行弯带面在上面

class2: 'z2'

},

rotateFn: function(e) {

let data = this.data

if (data.class1 == 'z1' &&data.class2 == 'z2') {

this.run('front', 'back', 'z2', 'z1')

} else {

this.run('back', 'front'档芦, 'z1', 'z2')

}

},

run: function(a, b, c, d) {

let that = this

that.setData({

class1: a,

class2: b,

})

setTimeout(function() {

that.setData({

class1: c,

class2: d,

})

}, 1000)

},

还有样闹羡式:

page{position: relativeheight: 100%background-color: #F6F6F6}

.rotateCtn{position: absolutewidth: 70%height: 70%left: 15%bottom: 20%transform-style:preserve-3d}

.frame{position: absoluteheight: 100%width: 100%}

.frame image{height: 100%width: 100%border-radius: 8px}

.front{animation:front 1s linear 1backface-visibility: hidden}

.back{animation:back 1s linear 1}

@keyframes front{from{transform: rotateY(0deg)} to{transform: rotateY(180deg)}}

@keyframes back{from{transform: rotateY(-180deg)} to{transform: rotateY(0deg)}}

.z1{z-index:6}

.z2{z-index:5}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12509655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存