Angular 保存默认数组
Angular saving default array
我有这个代码:
$scope.DefaultSidebarLinks = [
{
"Link":"/home",
"Title":"Home",
"Icon":"fa-home"
}
];
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
$scope.addSidebarLink = function(link,title,icon,resetFirst){
var element = {"Link":link,"Title":title,"Icon":icon};
if(resetFirst)
{
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
$scope.SidebarLinks.push(element);
}
else
$scope.SidebarLinks.push(element);
}
主要问题是当我在 SidebarLinks 中推送一个新元素时,它也会在 DefaultSidebarLinks 中推送它。
我想做的是在询问时重置 SidebarLinks 并仅将新的给定元素推送到此局部变量中。
如果您分配这样的数组:
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
您正在创建两个相同的数组,即同一数组的两个不同名称。它们指向相同的内存,因此 $scope.SidebarLinks
中的任何更改也会更改数组 $scope.DefaultSidebarLinks
,因为它们都是相同的。
如果你想深度复制一个数组,你可以通过多种方式实现:
解决方案1(Angular方式):
$scope.SidebarLinks=angular.copy($scope.DefaultSidebarLinks);
解决方案 2(javascript 方式):
$scope.SidebarLinks = $scope.DefaultSidebarLinks.slice();
基本上,slice() 操作克隆数组和 returns 对新数组的引用。
我有这个代码:
$scope.DefaultSidebarLinks = [
{
"Link":"/home",
"Title":"Home",
"Icon":"fa-home"
}
];
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
$scope.addSidebarLink = function(link,title,icon,resetFirst){
var element = {"Link":link,"Title":title,"Icon":icon};
if(resetFirst)
{
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
$scope.SidebarLinks.push(element);
}
else
$scope.SidebarLinks.push(element);
}
主要问题是当我在 SidebarLinks 中推送一个新元素时,它也会在 DefaultSidebarLinks 中推送它。
我想做的是在询问时重置 SidebarLinks 并仅将新的给定元素推送到此局部变量中。
如果您分配这样的数组:
$scope.SidebarLinks = $scope.DefaultSidebarLinks;
您正在创建两个相同的数组,即同一数组的两个不同名称。它们指向相同的内存,因此 $scope.SidebarLinks
中的任何更改也会更改数组 $scope.DefaultSidebarLinks
,因为它们都是相同的。
如果你想深度复制一个数组,你可以通过多种方式实现:
解决方案1(Angular方式):
$scope.SidebarLinks=angular.copy($scope.DefaultSidebarLinks);
解决方案 2(javascript 方式):
$scope.SidebarLinks = $scope.DefaultSidebarLinks.slice();
基本上,slice() 操作克隆数组和 returns 对新数组的引用。