簡體   English   中英

Vue.js中的對象不是可擴展錯誤

[英]object is not extensible error in vuejs

我想用名為colspan的新字段更新促銷對象。 但是我的運氣不好

錯誤:

未捕獲(承諾)TypeError:無法添加屬性colspan,對象在Array.forEach(本機)處的eval(eval在( http:// localhost:8080 / app.js:3160:1 ),:71:32)處不可擴展)在eval(eval在( http:// localhost:8080 / app.js:3160:1 ),:66:35)在Array.forEach(本機)在eval(在( http:// localhost:8080 / app.js:3160:1 )::64:47)在val的Array.forEach(本地)(在( http:// localhost:8080 / app.js:3160:1 ),:62:23的eval) Promise()位於F(eval位於( http:// localhost:8080 / app.js:865:1 )::35:28)位於Object.modifyData(eval位於( http:// localhost:8080 / app.js :3160:1,:48:12

departmentIds.forEach(departmentId => {
          results[departmentId] = []
          departmentWiseResults[departmentId].forEach((promo, index) => {
            let tmpPromo = promo
            dateRanges.dateRanges.forEach(range => {
              let startedDateWeek = moment(promo.startDate).week()
              let endDateWeek = moment(promo.endDate).week()
              let startedYear = moment(promo.startDate).year()
              let endedYear = moment(promo.endDate).year()
              tmpPromo.colspan = 0
              if (range.startYear === startedYear && range.endYear === endedYear && range.weekNumber <= endDateWeek && range.weekNumber >= startedDateWeek) {
                tmpPromo.colspan++
              }
              departmentWiseResults[departmentId].splice(index, 1, tmpPromo)
              console.log('stareted:', startedDateWeek, endDateWeek, startedYear, endedYear, promo, tmpPromo, departmentWiseResults[departmentId])
            })
            console.log('promo after adding colspna:', promo)
            // if (isInRange(range, promo)) {
            //   console.log('for range', range.startDate, range.endDate)
            //   console.log('for promo', promo.id)
            //   console.log(
            //     'diff is',
            //     findWeekspan(range, dateRanges.dateRanges[dateRanges.dateRanges.length - 1], promo)
            //   )
            // // if (!promo.used) {
            // //   promo.used = true
            // //   results[departmentId]
            // // }
            // }
          })
        })

請幫我解決這個問題。

目的promo已擴展通過關閉Object.preventExtensions (或sealfreeze )。 這意味着您不能向其添加新屬性。 相反,您可以使用新屬性為其制作新副本。 一種方便的方法是使用Object.assign

let tmpPromo = Object.assign({colspan: 0}, promo);

這從定義colspan的匿名對象開始,將promo屬性復制到其中,然后返回該對象(我們將其分配給tmpPromo )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM