0

I really hope that you can help me. I have problem where i want to make CRUD operation. I successfully create add and delete operation but I can't create for edit function. My vision is to have a table that allow user to update the data in row when user click edit button. But now, my edit button is not working. I'm using array to display data. Here is my code in HTML

<div class="col-md-12 content-maintenance">
<h3>
    <strong>Project
    </strong>
</h3>
<div class="input-group">
    <input class="form-control"   ng-model="filterproject" placeholder="filter" type="text"/>
    <span class="input-group-addon">
        <span class="glyphicon glyphicon-filter"></span> Filter
    </span>
</div>
<br>
<div class="table-responsive">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>PPMID</th>
                <th>EPRID</th>
                <th>Release ID</th>
                <th>Project Name</th>
                <th>Release Name</th>
                <th>Application Name</th>
                <th>Action</th>
            </tr>
            <tr>
                <th>
                    <input class="form-control" ng-model="ppmid" id="ppmid" type="number" min="1" placeholder="PPMID">
                </th>
                <th>
                    <input class="form-control" ng-model="eprid" id="eprid" type="number" min="1" placeholder="EPRID">
                </th>
                <th>
                    <input class="form-control" ng-model="releaseid" id="releaseid" type="text" placeholder="Release ID">
                </th>
                <th>
                    <input class="form-control" ng-model="projectname" id="projectname" type="text" placeholder="Project Name">
                </th>
                <th>
                    <input class="form-control" ng-model="releasename" id="releasename" type="text" placeholder="Release Name">
                </th>
                <th>
                    <input class="form-control" ng-model="applicationname" id="applicationname" type="text" placeholder="Application Name">
                </th>
                <th>

                    <button ng-click="add()" class="btn btn-primary">
                        <span class="glyphicon glyphicon-plus"></span>                      
                    </button> 
                </th>  
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="item in filteredlist | filter: filterproject" ng-include="loadTemplate(item)">

            </tr>   

        </tbody>
    </table>
    <script type="text/ng-template" id="view">
        <td>{{item.PPMID}}</td>
        <td>{{item.EPRID}}</td>
        <td>{{item.Releaseid}}</td>
        <td>{{item.projectname}}</td>
        <td>{{item.releasename}}</td>
        <td>{{item.appname}}</td>
        <td>
            <button type="button" class="btn btn-default" ng-click="editContent()">
                    <span class="glyphicon glyphicon-edit"></span>
                </button>
                <button ng-click="remove()" type="button" class="btn btn-danger">
                    <span class="glyphicon glyphicon-trash"></span>
                </button>
        </td>
    </script>

    <script type="text/ng-template" id="edit">
        <td> <input class="form-control" ng-model="editablerow.ppmid" id="ppmid" type="number" min="1" placeholder="PPMID"></td>
        <td><input class="form-control" ng-model="editablerow.eprid" id="eprid" type="number" min="1" placeholder="EPRID"></td>
        <td><input class="form-control" ng-model="editablerow.releaseid" id="releaseid" type="text" placeholder="Release ID"></td>
        <td><input class="form-control" ng-model="editablerow.projectname" id="projectname" type="text" placeholder="Project Name"></td>
        <td><input class="form-control" ng-model="editablerow.releasename" id="releasename" type="text" placeholder="Release Name"></td>
        <td><input class="form-control" ng-model="editablerow.applicationname" id="applicationname" type="text" placeholder="Application Name"></td>
        <td>
           <button type="button" class="btn btn-default" ng-click="saveData($index)">
                    <span class="glyphicon glyphicon-ok"></span>
                </button>
                <button ng-click="reset()" type="button" class="btn btn-danger">
                    <span class="glyphicon glyphicon-remove"></span>
                </button> 
        </td>
    </script>


</div>

and for my JS, I have try to put id in array and not put id in array. When i put id in array, in $scope.loadTemplate= function(item) { if(item.id===$scope.editablerow.id) return 'edit'; else return 'view'; } will return view which have trash and edit button. It supposed to be good behavior because user supposed to see the edit and trash button but when i try to click edit button, it won't work. So i have heard some advice that when using $index, I don't have to put id on it because it start with 0 so i follow that advice but unfortunately, it show edit only.

 app.directive('maintenanceProject', [function(){
return{
  restrict: 'EA',
  scope: {},
  templateUrl: 'modules/maintenance/maintenance-project.html',
  link: function($scope, element, attrs) 
  {
    $scope.allItems=getdummydata ();
    $scope.filteredlist=$scope.allItems;
    $scope.editablerow = '';
    function getdummydata()
    {
        return [
        {

          PPMID:10101,
          EPRID:10201,
          Releaseid: 10301,
          projectname:'a',
          releasename:'b',
          appname:'c'
        },
        {  

          PPMID:40102,
          EPRID:40202,
          Releaseid: 40302,
          projectname:'d',
          releasename:'e',
          appname:'f'
        },
        {  

          PPMID:50103,
          EPRID:50203,
          Releaseid: 50303,
          projectname:'g',
          releasename:'h',
          appname:'i'
        },
        {  

          PPMID:60104,
          EPRID:60204,
          Releaseid: 60304,
          projectname:'j',
          releasename:'k',
          appname:'l'
        },
        {  

          PPMID:70105,
          EPRID:70205,
          Releaseid: 70305,
          projectname:'m',
          releasename:'n',
          appname:'o'
        },
        {  

          PPMID:80106,
          EPRID:80206,
          Releaseid: 80306,
          projectname:'p',
          releasename:'q',
          appname:'r'
        }];
    }
    $scope.add=function()
      { //use unshift to add item in beginning of array
        $scope.allItems.unshift(
              {
                 PPMID: $scope.ppmid,
                 EPRID:$scope.eprid, 
                 Releaseid:$scope.releaseid, 
                 projectname:$scope.projectname, 
                 releasename:$scope.releasename,
                 appname:$scope.applicationname
              });
        $scope.resetAll(); 
      }
    //to make its empty (reset back) for add
    $scope.resetAll = function()
      {
        $scope.filteredList = $scope.allItems ; 
        $scope.ppmid = '';
        $scope.eprid = '';
        $scope.releaseid = '';
        $scope.projectname = ''; 
        $scope.releasename = ''; 
        $scope.applicationname = '';
      }  
    $scope.remove=function(item)
      {
        $scope.filteredlist.shift(1,1);
      }
    //for edit function
    $scope.editContent=function(item)
      {
         $scope.editablerow=angular.copy(item);//now edittablerow hold value item id=..
      }
    $scope.loadTemplate= function(item)
      {
        if(item.id===$scope.editablerow.id) return 'edit';
        else
          return 'view';
      }
    $scope.saveData = function (indx)
    {
      $scope.allItems[indx] = angular.copy($scope.editablerow);
      $scope.reset();
    }
    $scope.reset=function(){
      $scope.editablerow=[];
    }
  }
}}]) 

Thank you so much

4
  • you are not passing item in html it should be ng-click="editContent(item)" Commented Nov 22, 2016 at 10:07
  • Pass unique id as a parameter in the editContent() calling function. So, that it will be identified by the controller which record you want to delete based on that id. Commented Nov 22, 2016 at 10:10
  • @VinodLouis thank you. I make such a silly mistake Commented Nov 22, 2016 at 16:59
  • @VinodLouis did you know why i can't used unshift when i used inline edit ? Commented Nov 22, 2016 at 17:15

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.