检查ng-repeat内部的项目是否已经包含值
我有一个JSON字符串的问题和答案在ng-repeat中绑定, 现在问题是我想在ng-repeat中显示问题一次和所有多个答案。 这是我的数据。检查ng-repeat内部的项目是否已经包含值
{Answer:"White",AnswerID:967,answer_type:"RADIO",fullquestion:"Your Race",id:6}{Answer:"African American",AnswerID:968,answer_type:"RADIO",fullquestion:"Your Race",id:6}{Answer:"Asian",AnswerID:969,answer_type:"RADIO",fullquestion:"Your Race",id:6}
观点我显示在
<div ng-repeat="hrq in HrqQuestions">
<div class="list card normal">
<div class="item item-body item-divider">
<p ng-bind="hrq.fullquestion"></p>
</div>
<label class="item item-input" ng-show="hrq.answer_type=='FREETEXT'">
<input ng-model="hrq.Answer" name="name" type="text">
</label>
<div ng-if="hrq.answer_type=='RADIO'">
<ion-radio ng-click="selectedAnswer(hrq.AnswerID,hrq.Answer)" name="radio1" ng-value="hrq.AnswerID">{{hrq.Answer}}</ion-radio>
</div>
</div>
</div>
但这种结合的所有问题与答案多次像
Q.Your Race
White Your Race
Q.Your Race
African American Your Race
Q.Your Race
Asian
,但我需要一个像
Q. Your Race
White Your Race
African American Your Race
Asian
我会非常感谢任何人都可以帮助我h该
试试这个,
- 更改'HrqQuestions'作为阵列 个
- 组您的问题用'身份证'
- ,重复值的分组问题。与此类似,
angular.module('app',['angular.filter']).controller('MainController', function($scope) {
$scope.HrqQuestions = [
{Answer:"White",AnswerID:967,answer_type:"RADIO",fullquestion:"Your Race",id:6},
{Answer:"African American",AnswerID:968,answer_type:"RADIO",fullquestion:"Your Race",id:6},
{Answer:"Asian",AnswerID:969,answer_type:"RADIO",fullquestion:"Your Race",id:6}
];
});
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.4/angular-filter.js"></script>
<body ng-controller="MainController">
<div ng-repeat="(key, value) in HrqQuestions | groupBy: 'id'">
<div><strong>Id:</strong> {{ key }}</div>
<p ng-repeat="v in value">
<strong>Answer {{ $index + 1}}</strong>. {{ v.Answer }}
</p>
</div>
</body>
</html>
真棒,非常感谢你这是我一直在寻找:) – Vikas
尝试像this fiddle
<div ng-controller="MyCtrl">
<div ng-repeat="hrq in HrqQuestions">
<div class="list card normal">
<div class="item item-body item-divider">
<p>{{$index + 1}}. {{hrq.fullquestion}}</p>
</div>
<div ng-repeat="answer in hrq.answers">
<label class="item item-input" ng-show="answer.answer_type=='FREETEXT'">
<input ng-model="answer.Answer" name="name" type="text">
</label>
<div ng-if="answer.answer_type=='RADIO'">
<input type="radio" ng-click="selectedAnswer(answer.AnswerID,answer.Answer)" name="radio1" ng-value="answer.AnswerID">{{answer.Answer}}
</div>
</div>
<br>
</div>
</div>
</div>
控制器代码
$scope.HrqQuestions = [{ fullquestion: "Your Race", id: 6,
answers: [{ Answer: "White", AnswerID: 967, answer_type: "RADIO" },
{ Answer: "African American", AnswerID: 968, answer_type: "RADIO" },
{ Answer: "Asian", AnswerID: 969, answer_type: "RADIO" }] },
{ fullquestion: "My Race", id: 7,
answers: [{ Answer: "Black", AnswerID: 967, answer_type: "RADIO" },
{ Answer: "African Indian", AnswerID: 968, answer_type: "RADIO" },
{ Answer: "India", AnswerID: 969, answer_type: "RADIO" }] }];
JSON字符串中存在多个问题,所以我必须在ng-repeat内部使用它来显示所有问题,我不能单独显示它们。 – Vikas
好的,更改我的答案 –
我已经更新了答案,您需要更改JSON结构,将问题和答案保存在一个对象中。看到更新的答案和小提琴 –
一个想法是改变HrqQuestions对象到你想要的格式。 – Ruhul