Wie bekomme ich $index aus einer ng-repeat-Tabelle, um eine modal-controller?
Ich habe eine Tabelle Kunden-Datensätze erstellt, die mit angularjs bootstrap-ui und Verwendungen, von ng-repeat.
Am Ende jeder Zeile in der Tabelle ist ein button, um mehr Informationen über den Kunden.
Wenn die Schaltfläche geklickt wird, wird ein modales Formular öffnet mit den Informationen.
mein problem ist, egal welche Taste ich drücke, bekomme ich die gleiche Kundennummer
Das problem ist, ich brauchen, um den Wert von $index die folgende Stück code:
$scope.selected = {
customer: $scope.customers[0]
};
Ist der Wert von $index ersetzt werden muss der Wert 0 über
Was ich bisher getan habe, werden auf plunker klicken Sie auf hier
<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');
}
}
InformationsquelleAutor Laurence | 2014-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
ng-repeat-Direktive hat eine variable
Übergeben Sie diese variable in der click-Funktion wie folgt
Müssen Sie akzeptieren diesen index als parameter in der Methode, so fügen Sie einfach den parameter
InformationsquelleAutor adib.mosharrof
Passieren das Kunden-Objekt der Funktion zuerst:
Dann finden Sie den index auf das Objekt in Ihrer Funktion:
InformationsquelleAutor Rob
Mach es nicht wie dieser - anstatt die Arbeit mit tatsächlichen Kunden-Objekte. Korrigiert mich wenn ich mich Irre, aber es sieht aus wie haben Sie eine Art Liste mit Kunden, wenn Sie auf Sie klicken, öffnet sich ein modal mit mehr details. Probieren Sie etwas wie dieses:
In der customer-Tabelle:
In der Steuerung:
Und in der modal-controller:
Werden und schließlich in das modale anzeigen:
InformationsquelleAutor Fourth
Danke für Eure Vorschläge Rob und Vierte.
Ich habe eine Kombination von beiden, Ihre Anregungen
Sehen Sie das Ergebnis auf plunker, indem Sie auf hier
Die änderungen sind nachfolgend dargestellt
In der Steuerung der customer-Objekt ist im Rahmen der open-Funktion nur.
Musste ich index so konnte ich es mit dem Kunden-Objekt
Kunden und customerIndex sind in der ModalInstanceCtrl
InformationsquelleAutor Laurence
sollte es auch einfacher, wenn Sie direkt verwenden
$index
. Daher werden Sie nicht verlangen, die Suche nach dem index mit dem customer-Objekt im controller. Bitte haben Sie einen Blick auf die folgende es könnte auch geprüft werden, plunkerindex.html
example.js
InformationsquelleAutor Hamzeen Hameem