【发布时间】:2017-10-30 16:07:54
【问题描述】:
我有这个代码:
$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不创建副本;两个名称都引用了完全相同的数组对象。 -
你可以改用
angular.copy($scope.DefaultSideBarLink)