2017-09-19 1 views
0

Comment autoriser la duplication en ng-repeat avec le suivi et la mise à jour de la liste ng-repeat du contrôleur?Dupliquer ng-repeat avec la piste par

En utilisant la piste par l'indice de $ je ne suis pas en mesure de mettre à jour variable portée, mais je veux laisser l'objet en double en ng répétition

Condition: 1) permettent double en ng répétition 2) utiliser la piste par 3) mettre à jour la liste ng de répétition à partir du contrôleur

HTML

<div> 
    <ng-repeat="question in pagedata.questions track by $index"> 
      <p>{{question.questionText}}<p> 
     <div ng-repeat="option in question.optionList track by $index"> 
       <p ng-click="changeNextQuestion(question.nextQuestionId)">{{option}}</p> 
     </div> 

</div> 

Controller

$scope.pagedata.questions = [ 
    { 
     "questionId" : 1 
     "questionText" : "A" 
     "optionList" : [A1, A2, A3], 
     "nextQuestionId" : 2 

    }, 
    { 
     "questionId" : 2 
     "questionText" : "B" 
     "optionList" : [B1, B2, B3], 
     "nextQuestionId" : 2 
    }, 
{ 
     "questionId" : 3 
     "questionText" : "C" 
     "optionList" : [C1, C2, C3], 
     "nextQuestionId" : 2 
    } 
    ]; 
$scope.pagedata.questionsBack = angular.copy($scope.pagedata.questions); 

$scope.changeNextQuestion = function(nextQuestionId){ 
    var nextQuestion = findNextQuestionIndex($scope.pagedata.questions, nextQuestionId); 
    $scope.pagedata.questions[0] = $scope.pagedata.questionsBack[nextQuestion]; 
    }); 
//I want to update view with new value. 
} 


} 
+0

piste utilisée par l'indice $. mettre à jour suffit de mettre à jour la valeur de la portée. –

Répondre

0

Vous cochez cette one. J'espère que celui-ci est très utile pour vous.

Dans contrôleur

var studentsList = [ 
    {"Id": "101", "name": "siva"}, 
    {"Id": "101", "name": "siva"}, 
    {"Id": "102", "name": "hari"}, 
    {"Id": "103", "name": "rajesh"}, 
    {"Id": "103", "name": "rajesh"}, 
    {"Id": "104", "name": "ramesh"}, 
]; 

var uniqueStandards = UniqueArraybyId(studentsList ,"id"); 

function UniqueArraybyId(collection, keyname) { 
    var output = [], 
    keys = []; 

    angular.forEach(collection, function(item) { 
    var key = item[keyname]; 
    if(keys.indexOf(key) === -1) { 
     keys.push(key); 
     output.push(item); 
    } 
    }); 
    return output; 
}; 
+0

ng répétition = "objet objets suivi par l'indice de $" quand ng-click = "pushDuplicateAndUpdateView()" -> je veux pousser doublon à la liste et la vue de mise à jour contrôleur { $ scope.Objects [A B, C, B]; function pushDuplicateAndUpdateView() { $ scope.Objects [0] = C; } } – Rohit

+0

maintenant vous pouvez vérifier, j'ai mis à jour ma réponse. –

+0

S'il vous plaît donner une solution pour le commentaire ci-dessus – Rohit