首頁 >微信小程式 >小程式開發 >小程式中資料拷貝的問題解析

小程式中資料拷貝的問題解析

不言
不言原創
2018-09-04 13:46:342826瀏覽

這篇文章帶給大家的內容是關於小程式中資料拷貝的問題解析 ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

近期有幫同事做一個多商品評論的頁面,多商品,顧名思義就是很多商品,每個商品有星星評價,上傳圖片資訊以及評論內容,

因為原先有寫過公眾號這個功能,於是自告奮勇的去寫小程序的多商品評論了,結果就掉坑里了............

思路很簡單首先造一個星星的數組,五顆星好評就是五個星星的圖片,是這樣:

starList: [{
       srca: "img/star02@3x.png",
       index: "1"
       }, {
       srca: "img/star02@3x.png",
       index: "2"
       }, {
       srca: "img/star02@3x.png",
       index: "3"
       }, {
       srca: "img/star02@3x.png",
       index: "4"
       }, {
       srca: "img/star02@3x.png",
       index: "5"
       }],

懶得取下標直接用index代表評分,然後根據後台返回的商品列表數組定義一個新數組pductList進行循環定義變量starLista賦值為數組

for(var i = 0; i < response.commoditys.length; i++) {
               response.commoditys[i].starLista = starList;
  }

同時有多個圖片上傳的list同理進行操作,然後給循環出的星星綁定點擊事件取它的下標和index進行判斷循環每個商品下的星星數組動態更改src

  for(var i = 0; i < app.dataList[index].starList.length; i++)
   {
     app.dataList[index].starList[i].srca = "img/star02@3x.png";
     evaluateList[index].mark = idx + 1;
     if(i <= idx)
      {
        app.dataList[index].starList[i].srca = "img/star01@3x.png";
       }
       evaluateList[index].mark = idx + 1;
       evaluateList[index].commodityid = cId;
 }

最後取pductList  你需要的值基本上就都在這個數組裡面了,

--------------- ----------------------------------------------掉坑- ----------------------------------------------

#開始寫小程式就按照這樣的思路一直寫寫寫,然而寫到一半以後突然發現,我點擊了一行小星星,所有的星星顏色都會變化,經歷了排查以及抓耳撓腮坐如針墊,東西望之後,終於發現 

在定義的新數組pductList#中根據下標更改starLista   原來小星星的陣列starList,最初定義的陣列也會隨之改變

又經歷了百度谷歌csdn 博客園等等之後終於想起一計,將原星星數組starList 先轉為字符串格式,在給定義的新數組pductList賦值的時候在轉為json格式

let starListc=JSON.stringify(starList);
for(let i = 0; i < response.commoditys.length; i++) {
               response.commoditys[i].starLista = JSON.parse(starListc);
  }

終於解決問題,應該是涉及到小程序的數據深拷貝的原因,這樣處理一下更改的應該就是字串而不會更改原數組,也考慮過在造個數組去賦值,但是沒有這個方法簡單粗暴,對於這個搞了一個早上的坑,謹以此貼,留作紀念,以及警醒自己。 。 。 。 。 。 。 。 。 。 。 。 。 。 。

相關推薦:

備份與拷貝MYSQL資料庫_MySQL

#javascript對淺拷貝和深拷貝的詳解

以上是小程式中資料拷貝的問題解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn