CRUD issue when editing and saving from a table using angularjs

When I tried to click the edit switch, the details will be displayed in the corresponding windows, but the existing data in the table will be deleted. My requirement here is to use a single array / scope variable for editing, displaying, and deleting. But do not use for loop when editing / deleting. Here I made changes, but did not have the proper way to work. my html index.html as follows

<div ng-controller="employeeController">
    <header><h1>Employee Details</h1></header>

    <form name="myForm" novalidate>
        <table id="myTable" cellspacing="0" cellpadding="4">
            <tr>
                <td><label> Employee Id </Label></td>
                <td><input type="text" name="eid" data-ng-model="employees.EmployeeId" data-ng-required="true" ng-disabled="newEmployees"/></td>
            </tr>
            <tr>
                <td><label> FirstName </Label></td>
                <td><input type="text" name="fname" data-ng-model="employees.FirstName" data-ng-required="true"/></td>
            </tr>
            <tr>
                <td><label> LastName </Label></td>
                <td><input type="text" name="lname" data-ng-model="employees.LastName" data-ng-required="true"/></td>
            </tr>
            <tr>
                <td><label> Gender </Label></td>
                <td>
                    <input type="radio" name="gender" data-ng-change="employees.Gender" value ="Male" data-ng-model="employees.Gender"/> Male
                    <input type="radio" name="gender" data-ng-change="employees.Gender" value ="Female" data-ng-model="employees.Gender"/>Female
                </td>
            </tr>
            <tr>
                <td><label> Email </Label></td>
                <td><input type="text" name="email" data-ng-model="employees.Email" data-ng-required="true"/></td>
            </tr>
            <tr>
                <td><label> Account </Label></td>
                <td><input type="text" name="account" data-ng-model="employees.Account" data-ng-required="true"/></td>
            </tr>
            <tr>
                <td><input type="hidden" data-ng-model="employees.EmployeeId"></td>
            </tr>
        </table>
        <button name="btnSave" data-ng-click="saveEmployeeRecord(employees)" class="userbutton">Save</button>
        <button name="btnReset" data-ng-click="resetEmployeeRecord()" class="userbutton">Reset</button>
    </form> 

    <table border="2" cellspacing="0" cellpadding="4">
        <tr style="color: blue">
            <th style="width:100px">Employee Id</th>
            <th style="width:150px">FirstName</th>
            <th style="width:150px">LastName</th>
            <th style="width:90px">Gender</th>
            <th style="width:150px">Email</th>
            <th style="width:60px">Account</th>
            <th>Action</th>
        </tr>
       <tr style="color:green" data-ng-repeat="emp in employees">
           <td>{{emp.EmployeeId}}</td>
           <td>{{emp.FirstName}}</td>
           <td>{{emp.LastName}}</td>
           <td>{{emp.Gender}}</td>
           <td>{{emp.Email}}</td>
           <td>{{emp.Account}}</td>
           <td>
               <input type="radio" name="process" data-ng-click="editEmployee(emp, employees.indexOf(emp))"> Edit
               <input type="radio" name="process" data-ng-click="DeleteEmployee(employees.indexOf(emp))"> Delete
           </td>
       </tr>
   </table>
</div>

javascript app.js

var employeeApp = angular.module("myApp",[]);

employeeApp.controller("employeeController", function($rootScope, $scope, $http) {

            $http.get('data/employees.json').success(function(data) {

                $rootScope.employees = data;
            }); 

            var empId = 12342;
            $rootScope.saveEmployeeRecord = function(emp) {
                if($rootScope.employees.EmployeeId == null) {
                    $rootScope.employees.EmployeeId = empId++;
                    $rootScope.employees.push(emp);
                }
                else {
                    for(i in $rootScope.employees) {
                        if($rootScope.employees[i].EmployeeId == emp.EmployeeId) { 
                            $rootScope.employees[i]= emp;
                        }
                    }
                }

                //$rootScope.employees = {};
            }

            $rootScope.resetEmployeeRecord = function() {
                angular.copy({}, $rootScope.employees);
            }

            $rootScope.editEmployee = function(emp, indx) {

                    //$rootScope.emp = $rootScope.employees;
                    if($rootScope.employees[indx].EmployeeId == emp.EmployeeId) { 
                        $rootScope.employees = angular.copy($rootScope.employees[indx]);
                    }


            }

            $rootScope.DeleteEmployee = function(idx) {

                var result = confirm("Are you sure want to delete?");
                if (result) {
                    $rootScope.employees.splice(idx,1);
                    return true;
                }
                else {
                     return false;
                }

                //for(i in $rootScope.employees) {
                    //if($rootScope.employees[i].EmployeeId == idx) { 

                        //$rootScope.employees = {};
                    //}
                //}
            }

});

employee.json file:

[
            {
                "EmployeeId": "61234",
                "LastName": "Anderson",
                "FirstName": "James",
                "Gender": "Male",
                "Email": "james_anderson@infosys.com",
                "Account": "Boeing"
            },
            {
                "EmployeeId": "512458",
                "LastName": "Cambell",
                "FirstName": "Mike",
                "Gender": "Male",
                "Email": "mike.cambell@infosys.com",
                "Account": "Boeing"
            },
            {
                "EmployeeId": "712785",
                "LastName": "Swachengar",
                "FirstName": "Andrew",
                "Gender": "Male",
                "Email": "andrew.swachengar@infosys.com",
                "Account": "Cisco"
            },
            {
                "EmployeeId": "712734",
                "LastName": "Anderson",
                "FirstName": "James",
                "Gender": "Male",
                "Email": "james.anderson@infosys.com",
                "Account": "Apple"
            },
            {
                "EmployeeId": "61245",
                "LastName": "Green",
                "FirstName": "Rachael",
                "Gender": "Female",
                "Email": "rachael_green@infosys.com",
                "Account": "Boeing"
            },
            {
                "EmployeeId": "61347",
                "LastName": "Brown",
                "FirstName": "Jackualine",
                "Gender": "Female",
                "Email": "jackualine_brown@infosys.com",
                "Account": "Boeing"
            }
] 
+4
source share
2 answers

, /. , "", . , :

        $rootScope.saveEmployeeRecord = function() {
            for(k in $scope.selectedEmployee){
             $scope.selectedEmployee[k] = $scope.selectedEmployeeCopy[k];
            }
        }

        $rootScope.resetEmployeeRecord = function() {
            $rootScope.selectedEmployeeCopy = null;
        }


        $rootScope.editEmployee = function(emp) {
            $rootScope.selectedEmployee = emp;
            $rootScope.selectedEmployeeCopy = angular.copy($rootScope.selectedEmployee);
        }

. . , . .

: , , . jsFiddle. 2:

    $rootScope.saveEmployeeRecord = function() {
            $rootScope.employees.splice($rootScope.selectedIndex, 1,$rootScope.selectedEmployeeCopy);
        }

        $rootScope.resetEmployeeRecord = function() {
            $rootScope.selectedEmployeeCopy = null;
            $rootScope.selectedIndex = null;
        }

        $rootScope.editEmployee = function(emp, ind) {
            $rootScope.selectedIndex = ind;
            $rootScope.selectedEmployee = emp;
            $rootScope.selectedEmployeeCopy = angular.copy($rootScope.selectedEmployee);
        }

        $rootScope.DeleteEmployee = function(emp, ind) {

            var result = confirm("Are you sure want to delete?");
            if (result) {                    
                $rootScope.employees.splice(ind, 1);
                $rootScope.selectedEmployeeCopy = null;
                $rootScope.selectedIndex = null;
                return true;
            }
            else {
                 return false;
            }
        }
0

, , .

<button class="btn btn-default" ng-click="editBook(add.id, $index);" type="submit">Edit</button>

:

$scope.editBook = function(id,index) {
   $scope.show1=false;
   $scope.show=true;
   $http.get(appurl + 'user/adds/' + id + '.json')

        .success(function(data, status, headers, config) {
        $scope.user= data; 

        angular.copy($scope.user, $scope.copy);
    });

};
0

Source: https://habr.com/ru/post/1610425/


All Articles