微信小程序> 微信小程序如何改变循环里面的某个对象对应的标签的属性

微信小程序如何改变循环里面的某个对象对应的标签的属性

浏览量:665 时间: 来源:Xieyp040

关于这件事我遇到过两次。

先说第一次的解决方法。

第一次是我要根据后台传递的状态值来动态的改变用户是收藏了故事,还是没收藏故事的样式。

所以这个解决方法的前提条件是,后台有给你传递状态值。

直接代码来看。

​ i  bindtap="change" data-id="{{item.id}}" class="fa fa-{{item.status==1?'star':'star-o'}} anniu" data-status="{{item.status}}"  style="color:{{color}};"/i​

 

 

 

由图,用三目运算符判断状态,动态的添加属性样式。

再说第二次的解决方法。第二次没有那么好运了,后台没有给我传任何的状态。

那要怎么办?自己添加状态呗。 

首先,把需要的状态保存起来。我是要判断一道题做过了没有。

​init: function (){    var that=this;    var meng;    var questlist = wx.getStorageSync('questlist');    var answerlist = wx.getStorageSync('answerlist');    console.log("开始打印长度");    var thelength=questlist.length;    console.log(thelength)    var arr = [];    for (let i = 0; i  thelength; i++) {        arr[i] = 0;        }    console.log(arr)     console.log("开始打印");    for (var index in answerlist){      console.log(index);         for (var i = 0, len = questlist.length; i  len; i++) {           meng=questlist[i].id;            console.log(questlist[i].id);           if(meng==index) {                 // that.setData({                 //      color:"black"                 //   })              arr[i]=1;           }        }        console.log(index);    }    console.log(arr)    return arr;  },​

首先,通过缓存获取到题目列表和答案对象。

如图中代码所示,先用for循环创建一个有初始值的数组。

然后嵌套遍历问题列表和答案对象,找出对应的问题id和答案属性id一样的时候,修改初始数组的值为1,原本是0。

这就做到了保存问题是否已经答过了的状态。

之后,就到了最重要的一步了,给后台传递的对象数组添加属性。

talk is cheap, show you the code!

  wx.request({      url: getApp().globalData.website + 'choose/',      method: 'GET',      data: {        openId: wx.getStorageSync('openId'),        id: that.data.id      },      header: {        'Accept': 'application/json'      },      success: function (res) {        let { code, list, isAlready } = res.data        console.log("list")        console.log(list)        list=JSON.parse(list);        for(var i = 0, len = list.length; i  len; i++){                    for(var j = 0, leng = arr.length; j  leng; j++){                                      if(i==j){                                        // console.log(list[5])                                      list[i].status=arr[j];                                        }                       }                     }        console.log(list)        if (code == 0) {          that.setData({            list: list,            isAlready: isAlready          })          wx.setStorageSync("questlist", that.data.list)        } else {          that.openAlert()        }      },      fail: function () {        that.openAlert()      }    })

用一个嵌套循环,把状态值传递到新创建的属性。

关于对象怎么创建新属性,请看我的另外一篇博客。

https://mp.csdn.net/postedit/82353958

好了这就把状态添加到后台传递的对象数组里面了。

 view class="placeholder p-right" bindtap='toResult' style="color:{{item.status==1?'black':'white'}};" data-number='{{index}}'{{index+1}}/view  /block

再用个三目表达式,完美,达到目的,看效果图。答过得题的颜色变为了黑色。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎