Смешное поведение? Объект my menus содержит пункты меню, которые в этот момент кода равны = 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;
});
menus
к$rootScope
а не к экземпляру $ scope на уровне контроллера?