最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - object is not extensible error in vuejs - Stack Overflow

programmeradmin0浏览0评论

I want to update promo object with new field called colspan. But my bad luck that getting

Error:

uncaught (in promise) TypeError: Cannot add property colspan, object is not extensible at eval (eval at (http://localhost:8080/app.js:3160:1), :71:32) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :66:35) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :64:47) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :62:23) at Promise () at F (eval at (http://localhost:8080/app.js:865:1), :35:28) at Object.modifyData (eval at (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]
            // // }
            // }
          })
        })

Please help me how to solve this.

I want to update promo object with new field called colspan. But my bad luck that getting

Error:

uncaught (in promise) TypeError: Cannot add property colspan, object is not extensible at eval (eval at (http://localhost:8080/app.js:3160:1), :71:32) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :66:35) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :64:47) at Array.forEach (native) at eval (eval at (http://localhost:8080/app.js:3160:1), :62:23) at Promise () at F (eval at (http://localhost:8080/app.js:865:1), :35:28) at Object.modifyData (eval at (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]
            // // }
            // }
          })
        })

Please help me how to solve this.

Share Improve this question asked May 11, 2017 at 13:57 Ankit Kumar GuptaAnkit Kumar Gupta 1,3222 gold badges10 silver badges24 bronze badges 2
  • let tmpPromo = Object.assign({colspan: 0}, promo) ? – Roy J Commented May 11, 2017 at 16:09
  • Thanks a Lot @RoyJ – Ankit Kumar Gupta Commented May 11, 2017 at 18:15
Add a ment  | 

1 Answer 1

Reset to default 7

The object promo has had extensibility turned off via Object.preventExtensions (or seal or freeze). That means you cannot add new properties to it. Instead, you can make a new copy of it with new properties. A convenient way to do this is with Object.assign.

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

This starts with the anonymous object that defines colspan, copies properties from promo into it, and then returns the object (which we assign to tmpPromo).

发布评论

评论列表(0)

  1. 暂无评论