1. 程式人生 > >微信小程式更改重新整理data 陣列結構裡的某一項資料

微信小程式更改重新整理data 陣列結構裡的某一項資料

這是我的小程式簡單效果圖

每一個panel 是一個類別  每次點選檢視更多 需要呼叫介面重新整理當前類別的資料

因為這是分類是一個數據 於是我定義成一個data  陣列

data: {
    category_list:[
      { id: 1, name: '閱讀', show: false, loading: true, news_list: [] },
      { id: 2, name: '重複', show: false, loading: true, news_list: [] },
      { id: 3, name: '停留', show: false, loading: true, news_list: [] },
      { id: 4, name: '轉發', show: false, loading: true, news_list: [] },
      { id: 5, name: '評論', show: false, loading: true, news_list: [] },
      { id: 6, name: '點贊', show: false, loading: true, news_list: [] },
      { id: 7, name: '搞笑', show: false, loading: true, news_list: [] },
      { id: 8, name: '實用', show: false, loading: true, news_list: [] },
      { id: 9, name: '著數', show: false, loading: true, news_list: [] },
      { id: 10,name: '最美', show: false, loading: true, news_list: [] },
      { id: 11,name: '最萌', show: false, loading: true, news_list: [] },
      ]
  },

這是我小程式的data 

因為每次重新整理我只需要更新對應的item  如果每次setData  category_list 整個陣列, 感覺會消耗效能 ,所以只需要setData重新整理對應的item  

只需要通過 以下方式解決    

this.setData({
   'array[0].text': 'update data'
})
//如果索引是動態的 則使用下方方式
var  mText = 'array['+ index +'].text';
this.setData({
   [mText]: 'update data'
})
這是我示例中的方法
//載入列表,index 索引  showAll是否顯示全部
  getList: function (index,showAll){
    var mLoading = 'category_list[' + index + '].loading'
    var mNewsList = 'category_list[' + index + '].news_list'
    var mShowAll = 'category_list[' + index + '].show'
    var that = this;
    that.setData({
      [mNewsList]: [],
      [mLoading]: true
    })
    var category = this.data.category_list;
    var post_data = {
      category_id: category[index].id,
      filter_date: 0
    };
    api.getNewsList(function (data) {
      that.setData({
        [mLoading]: false,
        [mShowAll]: showAll
      })
      if (data.code == 200) {
        console.log(mLoading);
        that.setData({
          [mNewsList]: data.data
        })
      } else {
        wx.showModal({
          title: '',
          content: data.msg,
          showCancel: false
        })
      }

    }, post_data);
  }