在.splice()之后重置角度函数中数组的副本
resetting a copy of an array in an angular function after .splice()
我想做的是制作一个有角度的下拉菜单,从列表中删除当前页面。加载下一个视图时,我希望菜单重置并删除当前视图。
组成下拉菜单的对象数组
var menuItems = [
{menuItem: 'home', url: '/'},
{menuItem: 'depth', url: '/depth'},
{menuItem: 'bolt circle', url: '/bolt_circle'}
];
对数组进行排序()并从数组中取出当前页面的角度函数。
$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看起来像是.spicce()和$scope.items,每次我转到一个页面时,它都会从菜单中删除,直到我没有链接为止。我本以为每次运行sort()函数时制作一个数组副本会给我一个数组的新副本。我希望我解释得足够好。
执行此操作时:
$scope.items = menuItems;
您不是复制menuItems
数组,而是在$scope
对象中创建一个新属性items
,该属性将具有与menuItems
相同的数组引用。这意味着$scope.items
和menuItems
是相同的。
为了创建menuItems
阵列的副本,您应该执行以下操作:
$scope.items = menuItems.slice(0);
相关文章:
- 使用jQuery浏览函数数组
- coffescript/javascript函数数组的行为真的很奇怪
- 返回多个变量的 JavaScript 函数:数组与对象.最佳实践是什么
- 如何在 JavaScript 中动态地编写可迭代的函数数组
- JavaScript 自包含函数数组访问自我索引
- 如何在javascript中调用函数数组的索引号
- 从外部函数(数组)了解返回函数(x)
- Javascript函数数组
- 引用函数数组中的另一个函数
- 文本框搜索/Javascript函数数组**不对应**
- 返回一个函数数组
- selenium-webdriver 将函数数组作为参数传递给 executeScript
- 70%的时间运行JavaScript函数,从函数数组中随机选择
- 如何循环函数数组并在单击时一次执行一个
- 如何在 Javascript 命名空间脚本中创建函数数组
- 创建函数数组
- 在 Jscript 中为 Q.all() 构建一个动态函数数组
- 打印函数数组的函数名称
- 循环遍历函数数组 - 对象不支持此属性或方法 (IE8)
- 将函数数组传递给另一个函数