【问题标题】:ng-repeat on objects to create drop down对对象进行 ng-repeat 以创建下拉菜单
【发布时间】:2018-07-17 23:28:42
【问题描述】:

我的对象看起来像:

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,我想在下拉列表中显示模型对象的选定属性的成员属性。 例如。如果用户选择 Test1 属性,下拉菜单应填充 T1 和 T2。

感谢任何关于问题清晰度的建议。

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉,不能。建筑师不允许我这样做。
    • 它有效,但正如我所说,软件架构师不允许我更改对象。
    • 上一条评论中的小提琴正在使用您的对象结构。如果它对你有用,你能再检查一下吗?
    猜你喜欢
    • 2017-03-17
    • 2013-06-24
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多