$rootScope未使用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;
});

最新更新