2017-03-07 16 views
0

我无法访问嵌套集合中的某些项目。如何使用angularjs中的ng-repeat访问带方括号的项目

数组:

$scope.myArray = { 
    "pm_id": 2, 
    "type": "Scrum", 
    "estimated_end_date": "Wednesday, March 15, 2017", 
    "no_of_sprints": 2, 
    "status": "Not Started", 
    "created_by": "[email protected]", 
    "sprint": [ 
     { 
      "s_id": 4, 
      "p_id": 35, 
      "sprint_stage": "Sprint 1", 
      "sprint_requirement_[1]": "<p>description goes here </p>", 
      "sprint_start_date_[1]": "Monday, March 13, 2017", 
      "sprint_end_date_[1]": "Friday, March 17, 2017" 
     }, 
     { 
      "s_id": 5, 
      "p_id": 35, 
      "sprint_stage": "Sprint 2", 
      "sprint_requirement_[2]": "<p>description goes here </p>", 
      "sprint_start_date_[2]": "Monday, March 20, 2017", 
      "sprint_end_date_[2]": "Friday, March 24, 2017" 
     } 
    ] 
} 

HTML与NG-重复: -

<p ng-repeat="y in myArray"> 
<p ng-repeat="x in myArray.sprint">{{x.p_id}} , {{x.sprint_requirement_[1]}}</p></p> 

{{x.p_id}}工作正常,但{{x.sprint_requirement_[1]}}越来越空白。

任何人都可以让我知道我错过了什么吗?

回答

3

尝试:

<p ng-repeat="x in myArray.sprint">{{ x.p_id }}, {{ x['sprint_requirement_[' + ($index + 1) + ']'] }}</p> 

此外,外部ng-repeat似乎是多余的给我。

说明:在Javascript中,您可以使用点运算符和方括号语法来访问对象属性。

+0

'冲刺[1]'不包含对象与属性'sprint_requirement_ [1]'。 –

+0

'sprint [0]'确实包含'sprint_requirement_ [1]'...我更新了我的答案以解释编号......(这是一个非常奇怪的数据结构,顺便说一下......)。 – jjmontes

0

首先,你的myArray不是一个数组,所以ng-repeat不起作用。 其次,你的sprint_requirement不应该有一个索引。

$scope.myArray = [{ 
    "pm_id": 2, 
    "type": "Scrum", 
    "estimated_end_date": "Wednesday, March 15, 2017", 
    "no_of_sprints": 2, 
    "status": "Not Started", 
    "created_by": "[email protected]", 
    "sprint": [{ 
    "s_id": 4, 
    "p_id": 35, 
    "sprint_stage": "Sprint 1", 
    "sprint_requirement": "description goes here", 
    "sprint_start_date": "Monday, March 13, 2017", 
    "sprint_end_date": "Friday, March 17, 2017" 
    }, { 
    "s_id": 5, 
    "p_id": 35, 
    "sprint_stage": "Sprint 2", 
    "sprint_requirement": "description goes here", 
    "sprint_start_date": "Monday, March 20, 2017", 
    "sprint_end_date": "Friday, March 24, 2017" 
    }] 
}]; 

第三,你的HTML,第一NG重复y声明为一个变量,因此第二NG重复应变量里面的冲刺阵列上运行。 :

<div ng-repeat="y in myArray"> 
    <p class="lead">{{y.type}}</p> 
    <p ng-repeat="x in y.sprint">{{x.p_id}} , {{x.sprint_requirement}}</p> 
</div> 
0

angular.module("app",[]) 
 
.controller("ctrl",function($scope){ 
 
$scope.myArray = [{ "pm_id": 2, "type": "Scrum", "estimated_end_date": "Wednesday, March 15, 2017", "no_of_sprints": 2, "status": "Not Started", "created_by": "[email protected]", "sprint": [{ "s_id": 4, "p_id": 35, "sprint_stage": "Sprint 1", "sprint_requirement_[1]": "<p>description goes here </p>", "sprint_start_date_[1]": "Monday, March 13, 2017", "sprint_end_date_[1]": "Friday, March 17, 2017" }, { "s_id": 5, "p_id": 35, "sprint_stage": "Sprint 2", "sprint_requirement_[2]": "<p>description goes here </p>", "sprint_start_date_[2]": "Monday, March 20, 2017", "sprint_end_date_[2]": "Friday, March 24, 2017" }]}] })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
<div ng-repeat="y in myArray"> 
 
    <p ng-repeat="x in y.sprint">{{x.p_id}} , {{x['sprint_requirement_['+($index +1) +']']}}</p> 
 
    </div> 
 
</div>

相关问题