【发布时间】:2016-02-02 14:34:08
【问题描述】:
我正在尝试复制一个包含 id 的简单范围变量而不引用它。
这是一段代码,显示我在做什么:
.controller('ctl', function($scope, $rootScope, Resource) {
var controllerScope = this;
this.tId = 1;
/* ... */
this.addProject = function() {
this.supportedProjects.push(this.add.project);
this.supportedProjects = this.supportedProjects.map(function(object) {
var id = angular.copy(controllerScope.tId);
if (object.title.title)
return {
id: id,
title: object.title.title,
};
else
return {
id: id,
title: object.title,
};
});
this.tId++;
/* ... */
};
}
在这种情况下,supportedProjects 中的对象都包含相同的 id。
那么什么是不参考复制的正确方法呢?
我不知道发生了什么。
编辑:是我在 map 函数上做错了。
【问题讨论】:
-
您为什么要通过
map()调用运行this.supportedProjects,将所有ID 设置为相同的值?这是期望的行为吗?如果不是,那是什么? -
只是将对象重新格式化为具有正确的
title,但可能有更好的方法来做到这一点 -
但是您将每个对象 ID 设置为
controllerScope.tId。这是你想做的吗?我真的不明白这里的想法。 -
再次,您是否要将所有受支持的项目设置为相同的 tId?这里期望的行为是什么?
-
是的,我认为你是对的,我可能以错误的方式使用地图。我只是想更改标题字段
标签: javascript angularjs copy deep-copy