我正在使用angularJs中的checkbox选项创建一个嵌套的树结构。
来自后端的我的对象如下。
{
"2": {
"id": 2,
"name": "Under Graduate",
"slug": "under-graduate",
"parent_id": 0,
"level": 0,
"path": "0",
"show": false,
"selected": false,
"children": {
"3": {
"id": 3,
"name": "B.Com",
"slug": "b-com",
"parent_id": 2,
"level": 1,
"path": "2",
"show": false,
"selected": false,
"children": {
"4": {
"id": 4,
"name": "Commerce",
"slug": "commerce",
"parent_id": 3,
"level": 2,
"path": "2\/3",
"show": false,
"selected": false
}
}
}
}
}
}
我已将同一个对象分配给具有不同名称的2 $范围变量
$scope.a = object;
$scope.b = object;
现在我在 li 元素中使用了ng-repeat和ng-include,如下所示
<li ng-repeat="a in a.children" ng-include="'a_tree_renderer.html'"></li>
使用与另一个变量(b)相同的方法
<li ng-repeat="b in b.children" ng-include="'b_tree_renderer.html'"></li>
在模板中,他们是一个扩展和查看所有孩子的选项。
与树算法相关的所有内容都可以正常工作,除非我在一个模板ex上执行此操作。 b,不知何故,模板(a)索引也会发生变化,即如果从第二个模板扩展选项,则第一个模板上的相同内容会扩展,反之亦然。
答案 0 :(得分:0)
通过分配$scope.a = object;
和$scope.b = object;
,$scope.a
和$scope.b
都会引用同一个对象。因此,修改其中一个将影响另一个。
如果您希望$scope.a
和$scope.b
独立,可以使用{{3}创建对象的深层副本,以便每个范围变量引用该对象的不同副本}。这样,当您更改$scope.a
或$scope.b
上的任何内容时,其他内容都不会受到影响。