我使用这个非常酷的isteven-multi-select,当我在两个不同的地方需要相同的下拉菜单时,我的问题就出现了。问题是,当我改变一个,另一个也改变,反之亦然。
它们彼此无关,并且具有完全不同的变量名称,字段名称等。它们共享的唯一内容就是我设置它们的位置。
let tempList = [
{
flag: "payCard.png",
code: "Credit Card"
},
{
flag: "payBank.png",
code: "Bank Transfer"
},
etc..
]
$scope.paymentList = tempList;
$scope.FooBaa = tempList;
即使你将这个临时列表设置在很久以前被遗忘的功能中,他们仍然坚持分享它并相互复制。
但是!!! 如果我这样做,那就行了......
let tempList = [
{
flag: "payCard.png",
code: "Credit Card"
},
{
flag: "payBank.png",
code: "Bank Transfer"
},
etc..
]
$scope.paymentList = tempList;
let tempList2 = [
{
flag: "payCard.png",
code: "Credit Card"
},
{
flag: "payBank.png",
code: "Bank Transfer"
},
etc..
]
$scope.FooBaa = tempList2;
有人可以解释原因吗?这对我来说是一个完全神秘的东西,现在已经烹饪了3个小时。
答案 0 :(得分:3)
数组是引用类型,因此您只需将FooBaa
指向内存中相同的数组:
$scope.paymentList = tempList;
$scope.FooBaa = tempList; // same exact array (not duplicated)
也许你想要一份副本:
$scope.paymentList = tempList;
$scope.FooBaa = angular.copy(tempList);