角度范围,分离数组,使它们不会发生碰撞

时间:2017-07-30 20:48:42

标签: javascript angularjs

我使用这个非常酷的isteven-multi-select,当我在两个不同的地方需要相同的下拉菜单时,我的问题就出现了。问题是,当我改变一个,另一个也改变,反之亦然。

enter image description here

它们彼此无关,并且具有完全不同的变量名称,字段名称等。它们共享的唯一内容就是我设置它们的位置。

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个小时。

1 个答案:

答案 0 :(得分:3)

数组是引用类型,因此您只需将FooBaa指向内存中相同的数组:

$scope.paymentList = tempList;
$scope.FooBaa      = tempList; // same exact array (not duplicated)

也许你想要一份副本:

$scope.paymentList = tempList;
$scope.FooBaa      = angular.copy(tempList);