$rootScope 不使用 forEach 更新

$rootScope not updating using forEach

有趣的行为?我的菜单对象包含菜单项,在这一刻的代码中 = 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;
});