2016-10-05 7 views
1

benötigen eine Gruppierung von einem Objekt in der folgenden Weise (mit der Nummerierung der Fragen) auszuführen:innen Nummerierung gruppiert Array

1. Header 1 
Subheader 1 
    1.1 Question 1 
    1.2 Question 2 
Subheader 2 
    1.3 Question 1 
    1.4 Question 2 
2. Header 2 
Subheader 1 
    2.1 Question 1 
Subheader 2 
    2.2 Question 2 

Successful bei Gruppierung in der obigen Weise unterstreichen-js verwenden. Aber ich brauche eine fortlaufende Nummerierung für die Fragen innerhalb eines Headers, die ich nicht erreichen kann. Bitte beziehen Sie sich auf die Datei, die ich erstellt habe.

Teil Lösung: Ich kann die Länge der Anzahl der Fragen erhalten, mit denen ich die Logik bauen kann, aber jedes Mal, wenn mein $ Index für jede Schleife zurückgesetzt wird, bin ich nicht in der Lage, die Gesamtzahl der Fragen in einer Kopfzeile zu erhalten .

HTML

<div ng-controller="MyCtrl"> 
    <div ng-repeat="y in grid" ng-init="headerIndex = $index ;">{{headerIndex + 1 }}. &nbsp;{{headers[headerIndex]}} 
    <div ng-repeat="x in y" ng-init="subHeaderIndex = $index;">&nbsp;&nbsp;&nbsp;&nbsp;{{x[0].sub_header_text}} 
{{x.length}} 
      <div ng-repeat="z in x " ng-init="questionIndex = $index">   
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
     {{headerIndex + 1 }}.{{((subHeaderIndex) * (x.length)) + (questionIndex + 1)}} 
     {{z.question_text}} 
    </div> 
    </div> 
    </div> 
</div> 

JS:

var myApp = angular.module('myApp',[]); 

function MyCtrl($scope) { 

    $scope.grid = {"Header in English template of German Country":{"SubHeader in English template in German Country":[{"question_text":"sadsad","header_text":"Header in English template of German Country","sub_header_text":"SubHeader in English template in German Country","question_version":1,"question_id":151113,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"sadsaddsa","header_text":"Header in English template of German Country","sub_header_text":"SubHeader in English template in German Country","question_version":1,"question_id":232366,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}],"SubHeader in English template of German Country":[{"question_text":"sadsaddsa","header_text":"Header in English template of German Country","sub_header_text":"SubHeader in English template of German Country","question_version":1,"question_id":162308,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"sadsadsad","header_text":"Header in English template of German Country","sub_header_text":"SubHeader in English template of German Country","question_version":1,"question_id":198190,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"sadsadsad","header_text":"Header in English template of German Country","sub_header_text":"SubHeader in English template of German Country","question_version":1,"question_id":204945,"position_id":101,"template_id":194941,"question_typ":"Numeric","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}],"sub Header 2":[{"question_text":"dsfdsfdsf","header_text":"Header in English template of German Country","sub_header_text":"sub Header 2","question_version":1,"question_id":166093,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"true","status":"new","minimum_value":"null","maximum_value":"null"}]},"First Header creation":{"First Sub Header creation":[{"question_text":"sadsad","header_text":"First Header creation","sub_header_text":"First Sub Header creation","question_version":1,"question_id":160341,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}]},"Header for testing":{"SUb header to Czech Republic":[{"question_text":"sadsad","header_text":"Header for testing","sub_header_text":"SUb header to Czech Republic","question_version":1,"question_id":181485,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"sadsadsad","header_text":"Header for testing","sub_header_text":"SUb header to Czech Republic","question_version":1,"question_id":226726,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"sadsadsad","header_text":"Header for testing","sub_header_text":"SUb header to Czech Republic","question_version":1,"question_id":238704,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}],"subheadertest":[{"question_text":"sadsad","header_text":"Header for testing","sub_header_text":"subheadertest","question_version":1,"question_id":212819,"position_id":101,"template_id":194941,"question_typ":"Y/N","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}]},"Header Title":{"sab tilte":[{"question_text":"dsfdsfdsf","header_text":"Header Title","sub_header_text":"sab tilte","question_version":1,"question_id":204747,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"true","status":"new","minimum_value":"null","maximum_value":"null"},{"question_text":"dsfdsfdsf","header_text":"Header Title","sub_header_text":"sab tilte","question_version":1,"question_id":234628,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"false","status":"new","minimum_value":"null","maximum_value":"null"}],"sub header":[{"question_text":"dsfdsfdsfdsf","header_text":"Header Title","sub_header_text":"sub header","question_version":1,"question_id":243346,"position_id":101,"template_id":194941,"question_typ":"Text","mandatory_field":"true","status":"new","minimum_value":"null","maximum_value":"null"}]}}; 

    $scope.headers = Object.keys($scope.grid); 
} 

JSFiddle - http://jsfiddle.net/mdaamir1989/Lvc0u55v/10517/

Antwort

1

einen Zähler an der Steuerung halten und erhöhen auf jeder ng-repeat die kontinuierliche zu bekommen Nummerierung von Fragen und setzen sie auf Subheader-Ebene zurück.

Ihre HTML ändern

<div ng-repeat="x in y" ng-init="subHeaderIndex = $index;number = resetCounter()"> 
     &nbsp;&nbsp;&nbsp;&nbsp;{{x[0].sub_header_text}} 
      {{x.length}} 
    <div ng-repeat="z in x" ng-init="questionIndex = $index; number = incrementCounter()">   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
      {{headerIndex + 1 }}.{{((subHeaderIndex) * (x.length)) + (questionIndex + 1)}} 
      {{z.question_text}} {{number}} 
    </div> 
</div> 

Kontroller

$scope.counter = 1; 
$scope.resetCounter = function(){ 
    return $scope.counter = 1; 
} 
$scope.incrementCounter = function() { 
    return $scope.counter++; 
} 

{{number}} in HTML wird Ihnen helfen, die fortlaufende Nummerierung für die Fragen

Aktualisiert Fiddle Erhaltung: http://jsfiddle.net/Lvc0u55v/10556/

+0

I don brauche keine fortlaufende Nummerierung, wie in th gezeigt Die Frage Ich brauche fortlaufende Nummerierung auf Fragen für alle Unterüberschriften in einem Header. –

+0

Können Sie mir bitte die erwartete Ausgabe geben. – Vikash

+0

Hallo Bitte finden Sie meine aktualisierte Antwort und lassen Sie mich wissen, was Sie brauchen. Und bitte finden Sie die aktualisierte Geige – Vikash