[英]object is not extensible error in vuejs
I want to update promo object with new field called colspan. 我想用名为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) 未捕获(承诺)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]
// // }
// }
})
})
Please help me how to solve this. 请帮我解决这个问题。
The object promo
has had extensibility turned off via Object.preventExtensions
(or seal
or freeze
). 目的
promo
已扩展通过关闭Object.preventExtensions
(或seal
或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
. 一种方便的方法是使用
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
). 这从定义
colspan
的匿名对象开始,将promo
属性复制到其中,然后返回该对象(我们将其分配给tmpPromo
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.