检查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该

+0

一个想法是改变HrqQuestions对象到你想要的格式。 – Ruhul

试试这个,

  1. 更改'HrqQuestions'作为阵列
  2. 组您的问题用'身份证'
  3. ,重复的分组问题。与此类似,

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>

+0

真棒,非常感谢你这是我一直在寻找:) – 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" }] }]; 
+0

JSON字符串中存在多个问题,所以我必须在ng-repeat内部使用它来显示所有问题,我不能单独显示它们。 – Vikas

+0

好的,更改我的答案 –

+0

我已经更新了答案,您需要更改JSON结构,将问题和答案保存在一个对象中。看到更新的答案和小提琴 –