не может добавлять данные при создании динамических строк

0

У меня есть сценарий, где я динамически добавляю текстовые поля, но если я нажму на вторую строку данных, это отразит первый

вот мой 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;
        };

Я не понимаю, где я ошибаюсь.

После заполнения данных из первой строки, когда я начинаю заполнять данные второй строки, данные первой строки исчезают, а выпадение также отражает данные второй строки.

Любая помощь приветствуется.

1 ответ

0

Проблема может быть с мелкой копией,

 <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
                    })
                };

Попробуйте это, если это не работает, сообщите мне

  • 0
    Это не работает. Та же проблема, с которой я столкнулся снова @vignesh
  • 0
    @dinesh можешь публиковать в плункере

Ещё вопросы

Сообщество Overcoder
Наверх
Меню