在编辑行时,取消按钮如何工作?如果我想使用AngularJS中的编辑按钮一次编辑所选项目?

时间:2017-05-05 08:27:35

标签: javascript angularjs

以下是代码

$(function() {
    $(".stock-hyperlink").click(function(event) {
        event.preventDefault(); //stop normal link behaviour

        var stockVal = $(".stock-dropdown").val(); //get the selected value of the dropdown
        var url = "";

        if (stockVal != "")
        {
            switch(stockVal)
            {
                case "PASTA":
                    url = "../FOOD_Rep/FOOD_Rep";
                    break;
                case "Source":
                    url = "../FOOD_Ing/FOOD_Ing";
                    break;
                case "Brand":
                    url = "../FOOD_Brd/FOOD_Brd";
                    break;
            }
            url += ".aspx?FOOD_NO=" + $(this).data("foodno") + "&FOOD_ID=" + $("#GROUP_ID").val();

            var winopen = window.open(url, 'Memo', ' left=50, screenx= 10, width=1360,height=820,scrollbars=1,resizable=1,toolbar=0');
            winopen.focus();
        }

    });
});

如何为取消按钮编写重置功能,之后如何检查各行并一次编辑所有行。有人可以帮我弄这个吗? 以下是plunker链接:http://plnkr.co/edit/w6OvIO77PiWPIxWl1b5f?p=preview

2 个答案:

答案 0 :(得分:1)

关于取消功能为了简洁起见,这是非常粗略的代码,但你可以理解主要想法(它是来自plunker的代码的一部分,但有一些变化):

 //edit the rows using edit button
      $scope.editData = {};
      $scope.tempData = {};

      for (var i = 0, length = $scope.names.length; i < length; i++) {
        $scope.editData[$scope.names[i].id] = false;
      };

      $scope.edit = function(x) {
        $scope.tempData.name = x.name;
        $scope.tempData.country = x.country;

        $scope.editData[x.id] = true;
      };

      $scope.update = function(x) {
        $scope.editData[x.id] = false;
      };

      $scope.cancel = function(x) {
          x.name = $scope.tempData.name;
          x.country = $scope.tempData.country;
          $scope.tempData = {};
          $scope.editData[x.id] = false;
      };

第二个问题: 更改ng-单击

<button type="button" ng-click="editSelected()">Edit Selected</button>

并添加此功能:

$scope.editSelected = function(){
      for (var i = 0, length = $scope.names.length; i < length; i++) {
        if($scope.names[i].select)
          $scope.editData[$scope.names[i].id] = true;
      };
  }

答案 1 :(得分:1)

检查这个小提琴的答案

https://jsfiddle.net/athulnair/edkrLbuu/ 使用复制功能来实现这个

  $scope.orgNames = angular.copy($scope.names);

  $scope.edit = function(x,$index) {
    x.edit = true;
  };

  $scope.update = function(x,$index) {
    x.edit = false;
    var index = $scope.names.findIndex(i => i.id==x.id);
    var orgIndex = $scope.orgNames.findIndex(i => i.id==x.id);
    $scope.orgNames[orgIndex] = angular.copy(x)
  };

  $scope.cancel = function(x,$index) {
    x.edit = false;
    var index = $scope.names.findIndex(i=> i.id==x.id);
    var orgIndex = $scope.orgNames.findIndex(i => i.id==x.id);
    $scope.names[index] = angular.copy($scope.orgNames[orgIndex])
  };