首页 > 解决方案 > 对对象进行 ng-repeat 以创建下拉菜单

问题描述

我的对象看起来像:

var models = {
      "Test1":{
              "name":"Test1",
              "members":
                  {
                    "T1":{//some more properties},
                    "T2":{//some more properties}
              }
      }
      "Test2":{
              "name":"Test2",
              "members":
                  {
                    "T1":{//some more properties},
                    "T2":{//somemore properties}
              }
      }
}

如果用户选择对象模型的属性,我想在下拉列表中显示模型对象的选定属性的成员属性。例如。如果用户选择 Test1 属性,下拉应该填充 T1 和 T2。

任何有关问题清晰度的建议表示赞赏。

标签: angularjsangularjs-ng-repeat

解决方案


由于您无法更改对象,因此您可以在 HTML 中拥有:

<div ng-repeat="model in models">
  <div>
    <p ng-click="toggleVisibility(model.name)">Name: {{model.name}}</p>
    <div ng-repeat="member in model.members" ng-if="model.visibility">
      <p>Member Name: {{getMemberName(model.name, $index)}} </p>
      <p>Member properties: {{getMemberProperties(model.name, $index)}} </p>
    </div>
  </div>
</div>

在你的 AngularJS 控制器上:

$scope.toggleVisibility = function (entry) {
  $scope.models[entry].visibility = !$scope.models[entry].visibility;
};

$scope.getMemberName = function (entry, $index) {
  return Object.keys($scope.models[entry].members)[$index];
};

$scope.getMemberProperties = function (entry, $index) {
  var key = Object.keys($scope.models[entry].members)[$index];
  return $scope.models[entry].members[key];
};

编辑:更改答案以符合要求。


推荐阅读