2017-06-05 6 views
0

まだ角張った学習者です。Angular JS 1.3のアイコンをクリックしてセルを編集し、行を削除する方法は?

私は 1

コードのように私のページを持っているのです。

@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<div ng-controller="EmpCtrl"> 
    <div> 
     <h2 align="center">Angular JS Basic Example</h2> 
     <h5 align="center">Employee List</h5> 
     <table border="1" cellpadding="10" align="center"> 
      <tr> 
       <th> 
        Edit 
       </th> 
       <th> 
        Employee Id 
       </th> 
       <th> 
        Employee Name 
       </th> 
       <th> 
        Address 
       </th> 
       <th> 
        Email Id 
       </th> 
       <th> 
        Delete 
       </th> 
      </tr> 
      <tr ng-repeat="emp in employees"> 
       <td> 
        <a href="#" class="btn btn-default btn-sm"> 
         <i class="glyphicon glyphicon-edit"></i> 
        </a> 
       </td> 
       <td> 
        {{emp.EmployeeId}} 
       </td> 
       <td> 
        {{emp.EmployeeName}} 
       </td> 
       <td> 
        {{emp.Address}} 
       </td> 
       <td> 
        {{emp.EmailId}} 
       </td> 
       <td> 
        <a href="#" 
         onclick="return confirm('Delete this Employee?');" 
         class="btn btn-default btn-sm"> 
         <i class="glyphicon glyphicon-trash"></i> 
        </a> 
       </td> 
      </tr> 
     </table> 
    </div> 
</div> 

私はすべての従業員を取得するためのJSコードを持っています。それはうまくいく。

app.controller("EmpCtrl", function ($scope, EmployeeService) { 
GetAllEmployee(); 

function GetAllEmployee() { 

    var getAllEmployee = EmployeeService.getEmployee(); 
    getAllEmployee.then(function (emp) { 
     $scope.employees = emp.data; 
    }, function() { 
     alert('Data not found'); 
    }); 
} 
}); 

methosを削除するには、私のASP MVCのサービスコードがある

[HttpDelete] 
    public void DeleteEmployee(int id) 
    { 
     using (DatabaseContext db = new DatabaseContext()) 
     { 
      var employeeList = db.EmployeeModels.ToList(); 
      var temp = employeeList.Find(x => x.EmployeeId == id); 
      employeeList.Remove(temp); 
      db.SaveChanges(); 
     } 
    } 

私は私がそれを行うために他のjavascript機能を追加することが必要であることを推測、編集または削除/編集をクリックしてアイコンを削除します(多分ng-clcik ??)しかし、私は正確には分からない、どのようにセルを編集したり、行を削除するには?

答えて

0
//html 
<td> 
<a href="#" 
    ng-click="delFn(emp.EmployeeId,$index)" 
    class="btn btn-default btn-sm"> 
    <i class="glyphicon glyphicon-trash"></i> 
    </a> 
</td> 

//this way u can achieve it 
$scope.delFn = function(id, index){ 
    var response = confirm('Delete this Employee?'); 
    if(response) { 
     $http.delete('url/' + id).then(function(result) { 
      result.data ? $scope.employees.splice(index, 1) : null; 
     } 
    } 
} 
0

これは、UIの外観によって異なります。簡単で削除し、ちょうどあなたのコントローラ内の関数を宣言し、このような関数への行のインデックスを渡し:お使いのコントローラで

:あなたのビューで

$scope.delFn = function(index){ 
    var response = confirm('Delete this Employee?'); 
    if(response) { 
    $scope.employees.splice(index, 1); 
    } 
} 

:代わりにonclickのを、ng-使用クリック

<td> 
    <a href="#" 
     ng-click="delFn($index)" 
     class="btn btn-default btn-sm"> 
     <i class="glyphicon glyphicon-trash"></i> 
     </a> 
    </td> 

ここで、$ indexはng-repeatから暗黙的に利用可能です。または、これを明示的に述べるために行うことができます。

<tr ng-repeat="emp in employees track by $index"> 

あなた自身で編集を把握できますか?あなたがテーブルタグを使用しているからです。ポップアップ/モーダルを作成し、編集関数の行のインデックスを渡し、$ scope.employeesから選択した従業員を取得し、選択した従業員をポップアップに表示し、入力タグで編集可能にするようです。

+0

基本的にはクライアント側で動作するサービスを追加し、私は、DBへの変更を保存する必要があり、それを達成することができます。私のサービスコードを接続する方法は?私はコードを更新しました。ありがとう。 – Bigeyes

+0

あなたは削除する従業員を知っているので、彼らのIDを知るべきですか?そしてmvc apiがidを期待しているので、あなたは単にidをクエリパラメータで送ることができますか?私はEmployeeServiceで正しく機能するdelete関数を持っていて、データに各従業員のIDが含まれていると仮定しています。 –

+0

削除機能は動作していますが、私はservice.jsコードに '$ http.delete'が必要だと思います。どのように実装されているのか分かりません。私はそのコードを必要とします。 – Bigeyes

0
<a href="#" 
    ng-click="delFn(emp.EmployeeId)" 
    class="btn btn-default btn-sm"> 
    <i class="glyphicon glyphicon-trash"></i> 
    </a> 
</td> 

//このようuが

$scope.delFn = function(id){ 

    EmployeeService.delEmployee(id).then(function (data) { 
     GetAllEmployee(); 
    }, function() { 
     alert('Data not found'); 
    }); 
} 

が、その後

this.delEmployee= function (id) { 
     return $http.post('controller/delEmployee', data={id:id});    
    } 
+0

'$ http.post'を使っていると正しくはないと思います。それは '$ http.delete'でなければなりません。 – Bigeyes

+0

これです。delEmployee = function(id){return $ http.delete( 'controller/delEmployee'、data = {id:id})}; – Gokul

+0

uは削除のためにhttp投稿を使用することもできますし、削除する必要はありません。 – Gokul

関連する問題