微信小程式更改重新整理data 陣列結構裡的某一項資料
阿新 • • 發佈:2019-01-01
這是我的小程式簡單效果圖
每一個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); }