我有一个小问题,我不确定它是一个“角度问题”还是纯粹的“javascript问题”。 我正在尝试用我的简历制作某种“7错误游戏”(通过了解你知道)并且我有一个问题将“好版本”与“坏版本”分离(理解修改过的版本)。
以下是代码:
var that = this;
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = new Object();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}
this.resume = null;
this.wrongResume = null;
// get the json
$http.get('resources/resume.json')
.success(function(data) {
that.resume = clone(data);
//
// --> OUT: [...] gagné.
//
console.log(that.resume.description[1]);
that.wrongResume = clone(data);
for (var i = 0; i < dataServe.errors.length; i++) {
that.wrongResume = dataServe.errors[i].action(that.wrongResume);
};
//
// --> OUT: [...] <span ng-click="errors[0].resolution()" class="pointer" ng-hide="errors[0].resolved">mang</span><span ng-show="errors[0].resolved">gagn</span>é.
// --> should still be: [...] gagné.
//
console.log(that.resume.description[1]);
});
<span ng-click="e[...]">gagn</span>é.
mang
部分可以点击,点击它会降低得分值并再次显示gagn
(这是原始的)。
正如你所看到的,我试图硬拷贝这个对象,因为我只是分配了像that.resume = data;
这样的值,但没有更多的运气。
提前谢谢! :)
答案 0 :(得分:0)
您需要对象的深层副本 - 复制本身是数组或对象的属性是不够的 - 您还需要复制它们的属性等等(如果它们有嵌套的对象/数组)...所以这个是一个javascript而不是角度问题。
因此,如果您使用角度,您可以使用angular.copy
并且事情应该正常。
https://code.angularjs.org/1.4.5/docs/api/ng/function/angular.copy