解决方案- 注意:
- angular.copy 对我不起作用
- lodash cloneDeep 也没有用。
- 删除“使用严格”;没有帮助 - 它只是删除了在“错误”分配给只读值的 try/catch 中记录的错误
对我们来说,从 SQL 承诺值传回的值是一个对象数组。
我们得到“只读”错误的值是字符串、布尔值和数字。
console.log('this will log');
sqlReturnArray[0].name = "Bob"; // read only error here
console.log('wouldnt get to here to log');
我想,好吧,如果我不能为数组中的 THOSE 对象的属性分配值,为什么不能只复制所有对象的值?对象的分配是通过引用进行的,因此仅对数组进行循环将无济于事。您需要遍历键和值。
这解决了我们的问题
// where sqlReturnArray is the object given from the SQL promise
var newArrayOfObjects = [];
angular.forEach(sqlReturnArray, function (obj) {
var newObj = {};
angular.forEach(obj, function (val, key) {
newObj[key] = val;
});
newArrayOfObjects.push(newObj);
});