Angularjs angular.js的复杂切换行为

Angularjs angular.js的复杂切换行为,angularjs,Angularjs,情况: 我使用angular.js作为前端(新手),使用symfony2(php)作为后端。我查询用户和组的列表。所以html可能是这样的 <ul class="user-list"> <li ng-repeat="user in users"> <a ng:click="select(user)"> {{user.first_name}} {{user.last_name}} </a&

情况:

我使用angular.js作为前端(新手),使用symfony2(php)作为后端。我查询用户和组的列表。所以html可能是这样的

<ul class="user-list">
    <li ng-repeat="user in users">
        <a ng:click="select(user)">
              {{user.first_name}} {{user.last_name}}
        </a>
    </li>
</ul>

<div class="user-was-selected" ng-show="selectedUser != null">
    <ul class="dropdown-menu">
        <li ng-repeat="group in groups"><a>{{ group.name }}</a></li>
    </ul>
</div>
  • {{user.first{u name}{{user.last{u name}}
  • {{group.name}
当从列表中选择用户时,将显示另一个视图,其中显示一个充满组的下拉列表。这是所有可用的组。因此,列表查询不依赖于用户

但是,用户可以是组的成员。所以我需要在li元素上设置一个类,比如“in group”

在symfony2中,这很容易,因为它的模板引擎“twig”具有类似user.hasGroup的方法来检查用户是否在组中。我可以在细枝模板中正确执行此操作

我的问题是,我必须为此调用RESTAPI吗?这意味着我必须对每个用户的每个组进行RESTAPI组检查。这有意义吗?或者你看到了另一种解决方案吗


除此之外,从下拉列表中单击一个组将从单击的组中删除/添加(切换)用户。

您将把
ng类
添加到您的
li

<ul class="user-list">
    <li ng-repeat="user in users">
        <a ng:click="select(user)">
              {{user.first_name}} {{user.last_name}}
        </a>
    </li>
</ul>

<div class="user-was-selected" ng-show="selectedUser != null">
    <ul class="dropdown-menu">
        <li ng-class="{in-group: selectedUser.inGroup}" ng-repeat="group in groups"><a>{{ group.name }}</a></li>
    </ul>
</div>

可以使用ng类有条件地应用类。条件类似于“selectedUser.hasGroup”。如果您没有该方法,请将其添加到您的用户资源原型中。
angular.module('myApp').factory('User', ['$resource', function($resource) {
  var User = $resource(...);

  ...

  User.prototype.inGroup = function(group) {
    //determine if user is in group
    //'this' (selectedUser) and 'group' are at your disposal
    //return true if there's a match
  };

  ...

  return User;
}]);