【问题标题】:How to edit a cell and delete a row by clicking icon in Angular JS 1.3?如何通过单击 Angular JS 1.3 中的图标来编辑单元格并删除一行?
【发布时间】:2017-11-06 13:27:48
【问题描述】:

仍然是一个有角度的学习者。

我有我的页面

代码是:

    @{
    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');
    });
 }
});

我删除方法的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??)但我不知道,所以怎么做编辑单元格还是删除行?

【问题讨论】:

    标签: javascript angularjs asp.net-mvc


    【解决方案1】:
    //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;
           }   
        }
    }
    

    【讨论】:

      【解决方案2】:

      这将取决于您的用户界面的外观。删除很简单,只需在控制器中声明一个函数并将行的索引传递给函数,如下所示:

      在您的控制器中:

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

      在您看来:使用 ng-click 代替 onclick

        <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 获取选定的员工,在弹出窗口中显示选定的员工并使用输入标签使其可编辑。

      【讨论】:

      • 基本上它在客户端工作,我必须将更改保存到数据库。如何连接我的服务代码?我更新了代码。谢谢。
      • 你知道要删除哪个员工,所以你应该知道他们的id?由于 mvc api 需要一个 id,您可以在查询参数中发送 id 吗?我假设您的删除功能在 EmployeeService 中正常工作,并且您的数据包含每个员工的 id。
      • 删除功能正在工作,但我认为我的 service.js 代码中需要$http.delete。我不确定它是如何实现的。我需要那段代码。
      • 如果您只需要一个简单的 $http 删除,我相信 stackoverflow 上有很多与此相关的帖子吗?这样的事情应该有助于stackoverflow.com/questions/22055251/…
      • 如果您在实现 $http 删除时仍然遇到问题,您应该再发一篇文章来寻求该特定删除功能的帮助,并说明它为什么不起作用。 :)
      【解决方案3】:
      <a href="#" 
          ng-click="delFn(emp.EmployeeId)"
          class="btn btn-default btn-sm">
          <i class="glyphicon glyphicon-trash"></i>
        </a>
      </td>
      

      //这样就可以实现了

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

      【讨论】:

      • 如果使用$http.post,我认为它不正确。应该是$http.delete
      • this.delEmployee= function (id) {return $http.delete('controller/delEmployee', data={id:id})};
      • 你可以使用http post进行删除,也不需要使用delete,它不是必须的,使用post时你遇到了什么错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多