我想要完成的是制作一个角度下拉菜单,从列表中删除当前页面。加载下一个视图时,我希望菜单重置并删除当前视图。
构成下拉菜单的对象数组
var menuItems = [
{menuItem: 'home', url: '/'},
{menuItem: 'depth', url: '/depth'},
{menuItem: 'bolt circle', url: '/bolt_circle'}
];
将数组和.slice()排序()从数组中排出当前页面的angular函数。
$scope.sort = function(){
$scope.items = menuItems;
for(i=$scope.items.length-1; i>=0; i--){
var obj = $scope.items[i];
if($location.path() === obj.url){
$scope.items.splice(i, 1);
}
}
我对angular和javascript很新,所以我没有建立关于为什么menuItems看起来像.splice()以及$ scope.items的连接,每次我去一个页面它都会被删除菜单,直到我没有链接。我本以为每次运行sort()函数时都会生成数组的副本会给我一个新的数组副本。我希望我解释得那么好。
答案 0 :(得分:0)
执行此操作时:
$scope.items = menuItems;
您不制作menuItems
数组的副本,而是在items
对象中创建一个新属性$scope
strong>相同的数组引用为menuItems
。这意味着$scope.items
和menuItems
是相同的。
为了创建menuItems
数组的副本,您应该这样做:
$scope.items = menuItems.slice(0);