У меня есть эта переменная массива области действия
$scope.menuItems = [
{
name: 'Login',
url:'#/login',
isAvailable: true
},
{
name: 'Register',
url: '#/register',
isAvailable: $scope.global.roleId == null
},
{
name: 'My Restaurants',
url: '#/myrestaurants',
isAvailable: $scope.global.roleId == constants.OWNER_USER_ROLE_ID
},
{
name: 'Create Restaurant',
url: '#/createrestaurant',
isAvailable: $scope.global.roleId == constants.OWNER_USER_ROLE_ID
},
{
name: 'Logout',
url: '#/logout',
isAvailable: $scope.global.roleId != null
}
];
Этот объект зависит от другой переменной области действия $scope.global.roleId
Я загружаю меню из этого массива, как этот
<ul class="nav navbar-nav">
<li ng-repeat="n in menuItems | filter:{isAvailable:true}">
<a href="{{n.url}}">{{n.name}}</a>
</li>
</ul>
И я хочу, чтобы он обновлял меню автоматически при обновлении $scope.global.roleId
.
Следует отметить, что я обновляю эту переменную $scope.global.roleId
с дочернего контроллера, и это поле обновляется правильно, но ононе влияет на поле массива isAvailable
.
Я проверил обе переменные $scope.global.roleId
и $scope.menuItems
в журнале и $scope.global.roleId
корректно обновляется каждый раз, но не поле $scope.menuItems.isAvailable
, которое зависит от прежнего
Что плохого я делаю или ожидаю?И как правильно этого достичь?