我有一个需要在我的视图中检查的条件:如果用户列表中的任何用户与另一个用户具有相同的名称,我想显示其年龄。

就像是

<div ng-repeat="user in userList track by $index">
 <span class="fa fa-check" ng-if="user.isSelected"></span>{{user.firstName}} <small ng-if="true">{{'AGE' | translate}} {{user.age}}</small>
</div>


除了我缺少正确的条件

最佳答案

您可以模拟一个哈希映射键/值,并检查您的映射是否已获取属性名称。此外,您可以为$ scope.userList中的每个对象添加show属性。

控制者

(function(){

function Controller($scope) {

var map = {};

$scope.userList = [{
  name:'toto',
  age: 20,
  show: false
}, {
  name:'titi',
  age: 22,
  show: false
}, {
  name: 'toto',
  age: 22,
  show: false
}];

$scope.userList.forEach(function(elm, index){
  //if the key elm.name exist in my map
  if (map.hasOwnProperty(elm.name)){
    //Push the curent index of the userList array at the key elm.name of my map
    map[elm.name].push(index);
    //For all index at the key elm.name
    map[elm.name].forEach(function(value){
      //Access to object into userList array with the index
      //And set property show to true
      $scope.userList[value].show = true;
    });
  } else {
    //create a key elm.name with an array of index as value
    map[elm.name] = [index];
  }
});


}

angular
.module('app', [])
.controller('ctrl', Controller);

})();


的HTML

  <body ng-app="app" ng-controller="ctrl">

    <div ng-repeat="user in userList track by $index">
     <span class="fa fa-check"></span>{{user.name}} <small ng-if="user.show">{{'AGE'}} {{user.age}}</small>
    </div>


  </body>

关于javascript - Angular JS比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31866093/

10-09 15:37