ng-repeat中范围的动态名称

时间:2017-01-06 17:04:42

标签: javascript angularjs

我需要动态生成范围变量的名称,然后在我的html页面上的ng-repeat中使用它。老实说,我不知道如何开始。我需要的是:

在我的控制器中:

$scope.[myDynamicName] = Section1;
$scope.[myDynamicName] = Section2;

然后在我的HTML中:

<div ng-repeat="item in myDynamicName(Section1)"> here myDynamicName would be replaced with Section1
<div ng-repeat="item in myDynamicName(Section2)"> here myDynamicName would be replaced with Section2

问题是我有几个需要出现在1页的数组。当用户选择要查看的部分时,将填充数组。有超过100个部分(并且一直在创建新部分),用户可以选择任何部分组合在页面上查看,因此我不能只给它们静态名称。我尝试使用我在SO $scope[field]=Section1上找到的示例然后在我的html ng-repeat = q in field中,但当然,这不起作用。

目前,我在服务调用中使用部分ID获取每个部分的响应,如下所示:

            deferred.resolve(contractorService.getQuestionSectionAnswers(id)
          .success(function (data) {
            $scope.questions = data;

我无法在同一页面上为每个集合使用$scope.questions

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情(显然没有经过测试)。

首先,创建一个数组来保存结果组。

$scope.sectionAnswers = [];

接下来,当您获取特定组的结果时,可以将结果列表推送到数组中:

deferred.resolve(contractorService.getQuestionSectionAnswers(id)
      .success(function (data) {
        $scope.sectionAnswers.push(data);
      }))

然后,您可以遍历数组,然后遍历子数组:

<div ng-repeat="section in sectionAnswers">
  <div ng-repeat="answer in section">
    {{answer.field}}
  </div>
</div>

当用户取消选中该复选框时,您只需从阵列中删除关联的answers