有趣的行为?我的菜单对象包含的菜单项在代码的这一刻为true。这个片段正在工厂中运行。
angular.forEach($rootScope.menus, function(menu){
menu = false;
console.log(menu); // outputs false
})
console.log($rootScope.menus); //values are still equal to true
看起来,当循环中的值被设置为false时,它没有被应用到$rootScope,或者更确切地说没有更新?是否需要应用新值?
谨致问候,
forEach有一个传入的数组元素的副本(通过值传递,而不是通过引用传递)。要更新原始数组,请使用$rootScope.menus[i]:
angular.forEach($rootScope.menus, function (menu, i) {
$rootScope.menus[i] = false;
});