html:
<table>
<tbody>
<tr ng-repeat="row in Rows track by $index" ng-init="initUserDecision(row,$index)" >
<td>{{employeeName}}</td>
</tr>
</table>
<button id="change"/>
contrôleur
:
$scope.initUserDecision = function(row,index){
$scope.employeeName=row["name"];
}
$scope.rows=[{id:1,name:'siva'},{id:2,name:'ram'}]
//changing $scope.rows in button click event and used $scope.$apply as well
angular.element(document).on("click", "#change", function() {
$scope.rows=[{id:1,name:'ravi'},{id:2,name:'raj'}]
$scope.$apply();
});
fonction ng-init
appeler pour la première fois lors de tr initialisé. si je clique sur la touche, la collection de lignes de boutons est modifiée et elle n'appelle plus ng-init
. si j'enlève la trace par $index
ng-init
en appelant les deux fois. quand j'utilise la piste par $index
il a été appelé seulement une fois. pourquoi est-ce vrai? Une idée à ce sujet.
OP de créer de nouveaux objets sur le bouton cliquez sur '$ scope.rows = [{id: 1, nom: 'Ravi'}, { id: 2, nom: 'raj'}] '. Où est indexé? –
Le composant trackByIdFn de ngRepeat utilise l'index de l'élément dans la collection et cet index est donné à la portée de transclusion. – ram1993
oui, vous avez raison –