Ich versuche, eine Anweisung zu erstellen, wo Daten in einem Tabellenlayout angezeigt wird. Jede Zeile hat eine Bearbeitungsschaltfläche und beim Klicken auf die Bearbeitungsschaltfläche sollte nur diese Zeile im Bearbeitungsmodus sein. Aber in meinem Fall werden alle Zeilen im Bearbeitungsmodus angezeigt. Hier ist demo. HierIsolierte Bereich für Elemente innerhalb ng wiederholen in Richtlinie Vorlage
ist die Richtlinie Code:
.directive('myGrid', function() {
return {
restrict: 'E',
scope: {
employees: '='
},
controller: function($scope) {
$scope.isEdit = false;
$scope.showEdit = function() {
$scope.isEdit = $scope.isEdit == true ? false : true;
}
},
template: '<table class="table">' +
'<thead>' +
'<tr>' +
'<th ng-repeat="(key,value) in employees[0]">{{key}}</th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr ng-repeat="emp in employees">' +
'<td><span ng-hide="isEdit">{{emp.FirstName}}</span><input type="text" ng-show="isEdit" ng-model="emp.FirstName" class="form-control"></td>' +
'<td><span ng-hide="isEdit">{{emp.LastName}}</span><input type="text" ng-show="isEdit" ng-model="emp.LastName" class="form-control"></td>' +
'<td><span ng-hide="isEdit">{{emp.Email}}</span><input type="text" ng-show="isEdit" ng-model="emp.Email" class="form-control"></td>' +
'<td><span ng-click="showEdit()" ng-class="{\'glyphicon glyphicon-edit\':isEdit==false,\'glyphicon glyphicon-ok\':isEdit==true}"></span></td>' +
'</tr>' +
'</tbody>' +
'</table>'
};
})
Ich empfehle auch 'ng-show' zu ändern und' ng-hide' für 'ng-if' die mehr performant ist .. Siehe die Richtlinie Vorlage in meiner Antwort –
hier' ng -show' und 'ng-hide' sind besser als' ng-if', da das erneute Erstellen von DOM teuer ist und auch 'ng-if'' scope' hat, aber ng-show und ng-hide keinen Scope haben. –
Wenn Sie 'ng-if' verwenden, wird der Inhalt nur dann geladen, wenn der Ausdruck 'ng-if' truthy ist. –