Comment puis-je obtenir $index à partir d'une ng-repeat tableau modal contrôleur?
J'ai une table client les documents créés avec bootstrap, angularjs-interface utilisateur et utilise ng-repeat.
À la fin de chaque ligne du tableau correspond à un bouton pour obtenir plus d'informations sur le client.
Lorsque le bouton est cliqué sur un formulaire modal apparaît avec les informations.
mon problème est que quel que soit le bouton j'ai de la presse-je obtenir le même numéro de client
Le problème est que j'ai besoin de récupérer la valeur de $indice pour le code suivant:
$scope.selected = {
customer: $scope.customers[0]
};
La valeur de $index doit remplacer la valeur 0 au-dessus de
Ce que j'ai fait jusqu'à présent peut être vu sur plunker cliquez sur ici
<div ng-controller="ModalDemoCtrl">
<script type="text/ng-template" id="myModalContent.html">
< div class = "modal-header" > < h3 > I am a modal! < /h3>
</div > < div class = "modal-body" > < form class = "form-horizontal"
role = "form" > < div class = "form-group" > < label
for = "customerNumber"
class = "col-lg-2 control-label" > Email Address: < /label>
<div class="col-lg-10">
<input type="text" class="form-control" id="customerNumber"
ng-model="selected.customer.customerNumber"
ng-value="selected.customer.customerNumber">
</div > < /div>
</form > < /div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()">OK</button > < button class = "btn btn-warning"
ng - click = "cancel()" > Cancel < /button>
</div >
</script>
<div>
<table class="table table-striped">
<thead>
<tr>
<th>Customer number</th>
<th>Customer name</th>
<th>Customer last name</th>
<th>Customer first name</th>
<th>phone</th>
</tr>
</thead>
<tbody ng-repeat="customer in customers">
<tr>
<td>{{ customer.customerNumber }}</td>
<td>{{ customer.customerName }}</td>
<td>{{ customer.contactLastName }}</td>
<td>{{ customer.contactFirstName }}</td>
<td>{{ customer.phone }}</td>
<td>
<button class="btn btn-default" ng-click="open()">
Customer details
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
'use strict';
angular.module('myApp', ['ui.bootstrap'])
.controller('ModalDemoCtrl', function ($scope, $modal, $log) {
$scope.customers = [
{
"customerNumber": 103,
"customerName": "Atelier graphique",
"contactLastName": "Schmitt",
"contactFirstName": "Carine ",
"phone": "40.32.2555"
},
{
"customerNumber": 112,
"customerName": "Signal Gift Stores",
"contactLastName": "King",
"contactFirstName": "Jean",
"phone": "7025551838"
},
{
"customerNumber": 114,
"customerName": "Australian Collectors, Co",
"contactLastName": "Ferguson",
"contactFirstName": "Peter",
"phone": "03 9520 4555"
}
];
$scope.open = function () {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
customers: function () {
return $scope.customers
}
}
});
modalInstance.result.then(function (selectedCustomer) {
$scope.selected = selectedCustomer;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
});
//Please note that $modalInstance represents a modal window (instance) dependency.
//It is not the same as the $modal service used above.
var ModalInstanceCtrl = function ($scope, $modalInstance, customers) {
$scope.customers = customers;
$scope.selected = {
customer: $scope.customers[0]
};
$scope.ok = function () {
$modalInstance.close($scope.selected.customer);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
}
}
OriginalL'auteur Laurence | 2014-07-22
Vous devez vous connecter pour publier un commentaire.
ng-repeat directive a une variable
Vous pouvez passer cette variable dans la fonction de clic comme ce
Vous devez accepter cet indice comme un paramètre dans votre méthode, il suffit d'ajouter le paramètre
OriginalL'auteur adib.mosharrof
Passer l'objet client à votre fonction première:
Puis de trouver l'indice en fonction de cet objet dans votre fonction:
OriginalL'auteur Rob
Ne pas le faire de cette façon - au lieu de travailler avec de véritables objets de client. Corrigez-moi si je me trompe, mais il semble que vous avez une sorte de liste de clients que lorsque vous cliquez sur eux ouvre un modal avec plus de détails. Essayez quelque chose comme ceci:
Dans la table client:
Dans le contrôleur:
Et dans la modale de contrôleur:
Et enfin, dans la modale de vue:
OriginalL'auteur Fourth
Merci pour vos suggestions Rob et Quatrième.
J'ai utilisé une combinaison de deux de vos suggestions
Vous pouvez voir le résultat sur plunker en cliquant sur ici
Les modifications sont présentées ci-dessous
À l'intérieur du contrôleur de l'objet client est dans la portée de la fonction d'ouverture seulement.
J'ai dû obtenir l'index afin que je puisse l'utiliser avec les clients de l'objet
À la fois les clients et les customerIndex sont utilisés dans le ModalInstanceCtrl
OriginalL'auteur Laurence
il devrait être encore plus simple si vous utilisez directement
$index
. Par conséquent, vous n'aurez pas besoin de rechercher l'index de l'aide de l'objet client dans votre contrôleur. Jetez un oeil à ce qui suit, il pourrait également être testé sur, plunkerindex.html
example.js
OriginalL'auteur Hamzeen Hameem