2017-07-03 11 views
0

Actuellement je suis coincé dans un problème où j'ai des questions et des clés dans les données Je veux afficher les données de telle sorte que d'abord ma clé devrait apparaître puis mes données le problème est dans mes donnéesobjets inverses d'objets angularjs

{ 
    "0": [ 
    { 
     "question": "How often is real property re-assessed (or revalued)?", 
     "id": 1, 
     "section": "Assessment", 
     "sectionId": 2, 
     "check": true, 
     "index": 0 
    }, 
    { 
     "question": "How often second?", 
     "id": 3, 
     "section": "Assessment", 
     "sectionId": 2, 
     "check": true, 
     "index": 0 
    }, 
    { 
     "question": "How often third?", 
     "id": 2, 
     "section": "Assessment", 
     "sectionId": 2, 
     "check": true, 
     "index": 0 
    }, 
    { 
     "key": "Survey Meta Data" 
    } 
    ], 
    "1": [ 
    { 
     "question": "When are New Assessment Notices sent out?", 
     "id": 3, 
     "section": "Assessment", 
     "sectionId": 2, 
     "check": true, 
     "index": 1 
    }, 
    { 
     "key": "Assessment" 
    } 
    ] 
} 

quand j'utilise ng-répéter avec ces données que je suis quelque chose comme ceci:

<div ng-repeat="data in viewQuestions"> 
<div class="panel panel-default" ng-repeat="value in data"> 
    {{value.key}} 

    label>{{value.question}} </label> 

    </div> 
     </div> 

mes questions sont affichées en premier, puis la clé est affichée mais Je veux afficher la première clé et th en questions Je sais que le problème questions sont d'abord affichées parce qu'ils sont à la première puis sur la touche de données insérées.

est-il une méthode que je peux inverser les données afin clé est affichée en premier puis mes des questions

Répondre

0

Qu'est-ce que vous avez besoin est massant de données pour modifier la structure de données au format que vous avez besoin.

var processedData = []; 
angular.forEach(data, function(item) { 
    var section = { questions: [] }; 

    angular.forEach(data, function(question) { 
    if (question.key) { // this is key, not question 
     section.key = question.key; 
    } 
    else { 
     section.questions.push(question); 
    } 
    }); 

    processedData.push(section); 
}); 
+0

question .key est rien ses données .question –

+0

@KumailHussain Vous avez tableau de tableaux dans vos données, vous devrez peut-être de les combiner? – Icycool

+0

ce que vous voulez dire par combiner? –

0

Après déterrer je suis venu avec une solution qui fonctionne parfaitement bien: premier revers du tableau en utilisant ce filtre:

.filter("reverse", function(){ 
    return function(items){ 
     return items.slice().reverse(); // Create a copy of the array and reverse the order of the items 
    }; 
}); 

et en html Il suffit d'ajouter cette ligne

<div class="panel panel-default" ng-repeat="value in data |reverse"> 

maintenant la clé sera affichée en premier puis aux questions