как связать значения двух разных массивов друг с другом в угловых JS

0

Привет, я собираюсь управлять уровнями доступа пользователей с помощью угловых js и json. У меня есть два массива для структуры меню, а другой для уровней доступа.

текущие уровни доступа:

    $scope.current_access_levels ={
      "can_home":{"title":"home","value":true},
      "can_mail":{"title":"mail","value":false}
    };

Структура меню:

    $scope.menu = [
      {"id":"1","name":"home","aclvl":"can_home"},
      {"id":"2","name":"mail","aclvl":"can_mail"}
    ];

каждое поле меню имеет "aclvl", который соответствует именам объектов в массиве "current_access_level".

то, что я собираюсь сделать, это примерно так:

<div ng-app="app" ng-controller="appCtrl">
      <div  ng-repeat="aclvl in current_access_levels">
        <label>{{aclvl.title}}</label><input type="checkbox" value="1" ng-model="aclvl.value"/>
      </div>
      <br />
      <br />
      <ul>
        <li ng-repeat="men in menu">
          <input type="checkbox" ng-model="current_access_levels.(men.aclvl).value"/>{{men.aclvl}}
        </li>
      </ul>
   </div>

например, если "aclvl" "men" равен "can_home", значение флажка должно быть равно "aclvl.can_home.value". любой орган знает, как я должен справиться с этим !? я добавил скрипку, чтобы понять, что я предполагаю сделать. благодаря

angular.module('app',[])
  .controller('appCtrl',function($scope){
  
    $scope.current_access_levels ={"can_home":{"title":"home","value":true},"can_mail":{"title":"mail","value":false}};

    $scope.menu = [{"id":"1","name":"home","aclvl":"can_home"},{"id":"2","name":"mail","aclvl":"can_mail"}];
  
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>


<div ng-app="app" ng-controller="appCtrl">
  <!-- current access levels -->
  <p>current access levels</p>
  <div  ng-repeat="aclvl in current_access_levels">
    <label>{{aclvl.title}}</label><input type="checkbox" value="1" ng-model="aclvl.value"/>
  </div>
  <!-- current access levels -->
  <br />
    <div>{{current_access_levels}}</div>
  <br />
  <hr>
  <!-- menu structure just for example -->
  <p>menu structure</p>
  <ul>
    <li ng-repeat="men in menu">
      <input type="checkbox" ng-model="current_access_levels.can_home.value"/>{{men.aclvl}}
    </li>
  </ul>
  <!-- menu structure just for example -->
  
</div>
  • 0
    <li ng-repeat="men in menu"> <input type="checkbox" ng-model="current_access_levels.can_home.value"/>{{men.aclvl}} </li> У вас есть два флажка, связанных с одна и та же модель (обе они ссылаются на одну и ту же переменную)
  • 0
    TNX за ваш ответ, я знаю это. это пример, чтобы показать, что я собираюсь сделать. я хочу сделать это с помощью «ng-repeat» для каждого поля меню. каждое поле меню имеет "ac_lvl", который должен быть в "current_access_levels.here.value"
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

2
Лучший ответ

Вы можете использовать [] с current_access_levels как будто -

 <li ng-repeat="men in menu">
      <input type="checkbox" ng-model="current_access_levels[men.aclvl].value"/>{{men.aclvl}}
    </li>
  • 0
    Большое спасибо, теперь это работает как шарм. я не могу голосовать сейчас из-за моей репутации. Извините меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню