bindtap 中 that.setData 无法赋值
发布于 6 年前 作者 liwu 3929 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

ty: default

tt:

  • 预期表现

ty: warn

tt:  ok

  • 复现路径
  • 提供一个最简复现 Demo

js 程序片段

data: {

array: [

{ id: 0, unique: ‘独立’, type:‘default’ },

{ id: 1, unique: ‘慢热’, type: ‘default’},

{ id: 2, unique: ‘坦率’, type: ‘default’ },

{ id: 3, unique: ‘学霸’, type: ‘default’ },

{ id: 4, unique: ‘学渣’, type: ‘default’ },

{ id: 5, unique: ‘佛系少年’, type: ‘default’},

{ id: 6, unique: ‘积极上进’, type: ‘default’},

{ id: 7, unique: ‘阳光’, type: ‘default’},

{ id: 8, unique: ‘外冷内热’, type: ‘default’},

{ id: 9, unique: ‘勤奋’, type: ‘default’ },

],

}

touch01 : function (e) {

var arr = this.data.array;

var ID = e.currentTarget.id;

var that=this;

arr.forEach(function (item, index) {

var ty = item.type;

if (index == ID) {

    that.setData({

        ty: ‘warn’,

    });

}

});

}

wxml 部分

<button size=“mini” class=“pay-hint-content1” wx:for="{{array}}" wx:for-index=“idx” wx:for-item=“itemName”   id="{{idx}}"  type="{{itemName.type}}" bindtap=“touch01”>

请教一下各位大神,我的array是一个字符串数据,每次点击事件发生后想要改变array.type 中相应数据,但bindtap 中that.setData 一直无效,请教大家知道这是怎么回事吗?

3 回复

输出结果如上图所示,ty, tt 中值并未改变

什么乱七八糟的。。

setData修改的是data中的变量,会让视图重新渲染的。

你修改个tt然后打印的时候请打印this.data里的tt。。

补充下基础知识吧

var ID = e.currentTarget.id;

这个你打印下

回到顶部