对对象进行ng-repeat创建下拉菜单

时间:2018-07-17 23:28:42

标签: angularjs angularjs-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}
              }
      }
}

提供了,用户选择了对象 models 的属性,我想在下拉列表中显示所选模型对象的属性的members属性。 例如。如果用户选择Test1属性,则下拉菜单中应填充T1和T2。

感谢您提出任何有关问题明确性的建议。

1 个答案:

答案 0 :(得分:0)

由于您无法更改对象,因此在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];
};

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