У меня есть сценарий, где я динамически добавляю текстовые поля, но если я нажму на вторую строку данных, это отразит первый
вот мой html-код:
<table class="table table-bordered">
<thead>
<th>Level</th>
<th>Select Designation</th>
<th>Select Names</th>
<th>Save/Remove</th>
</thead>
<tbody>
<tr ng-repeat="choice in aChoices track by $index">
<td>{{choice.levelNo}}</td>
<td>
<select ng-model="designation+.$index" class="form-control" ng-change="fnChange(designation+.$index)">
<option>select designation</option>
<option ng-repeat="oData in aDesignation">{{oData.designation}}</option>
</select>
</td>
<td>
<select ng-model="name" class="form-control">
<option>select name</option>
<option ng-repeat="oData in aTpNames">{{oData.fullname}}</option>
</select>
</td>
<td>
<button class="btn btn-success col-xs-5" ng-show="showAddLevel(choice)" ng-click="addLevel(designation, name)"><span class="glyphicon glyphicon-plus"></span></button>
<button class="btn btn-danger col-xs-5" ng-click="removeLevel()"><span class="glyphicon glyphicon-trash"></span>
</button>
</td>
</tr>
</tbody>
Я написал контроллер, как показано ниже:
$scope.fnChange = function(designation) {
jobDescriptionService.fnGetTPNames(designation).then(function(response) {
$scope.aTpNames = response;
console.log($scope.aTpNames);
}, function(response) {
});
}
$scope.aChoices = [{
levelNo: 1
}];
$scope.aLevelDetails = [];
$scope.addLevel = function(designation, name) {debugger;
var iNewLevel = $scope.aChoices.length + 1;
$scope.aChoices.push({
'levelNo': iNewLevel
});
$scope.aLevelDetails.push({
'level': iNewLevel - 1,
'designation': designation,
'name': name
})
};
console.log($scope.aLevelDetails);
$scope.removeLevel = function() {
var iNewLevel = $scope.aChoices.length - 1;
if (iNewLevel !== 0) {
$scope.aChoices.pop();
}
};
$scope.showAddLevel = function(choice) {
return choice.levelNo === $scope.aChoices[$scope.aChoices.length - 1].levelNo;
};
Я не понимаю, где я ошибаюсь.
После заполнения данных из первой строки, когда я начинаю заполнять данные второй строки, данные первой строки исчезают, а выпадение также отражает данные второй строки.
Любая помощь приветствуется.
Проблема может быть с мелкой копией,
<button class="btn btn-success col-xs-5" ng-show="showAddLevel(choice)" ng-click="addLevel(choice)"><span class="glyphicon glyphicon-plus"></span></button>
$scope.addLevel = function(choice) {
debugger;
var iNewLevel = $scope.aChoices.length + 1;
$scope.aChoices.push({
'levelNo': iNewLevel
});
var obj = angular.copy(choice);
$scope.aLevelDetails.push({
'level': iNewLevel - 1,
'designation': obj.designation,
'name': obj.name
})
};
Попробуйте это, если это не работает, сообщите мне