【问题标题】:Remove first object from json on checkbox click - AngularJs + NodeJs单击复选框时从 json 中删除第一个对象 - AngularJs + NodeJs
【发布时间】:2018-06-20 09:17:24
【问题描述】:

这是我的 JSON 对象:

[
   { 
      field1: 'gsm',
      field2: 'firstname',
      field3: 'lastname',
      field4: 'street',
      field5: 'city',
      field6: 'region',
      field7: 'postcode',
      field8: 'dob',
      field9: 'email',
      field10: 'company',
      field11: 'url',
      field12: 'country',
      field13: 'data1',
      field14: 'data2',
      field15: 'data3' 
   },

   { 
      field1: '123456789',
      field2: 'Mohamed',
      field3: 'Sameer',
      field4: 'Salai',
      field5: 'Salai',
      field6: 'Asia',
      field7: '111111',
      field8: '10-10-10',
      field9: 'mohd@if.com',
      field10: 'ifelse',
      field11: 'ifelse',
      field12: 'India',
      field13: 'test',
      field14: 'test',
      field15: 'test' 
   },
   { 
      field1: '123456789',
      field2: 'Hameed',
      field3: 'Basha',
      field4: 'Salai',
      field5: 'Salai',
      field6: 'Asia',
      field7: '600091',
      field8: '10-10-10',
      field9: 'hameed@gmail',
      field10: 'ifelse',
      field11: 'ifelse',
      field12: 'India',
      field13: 'test',
      field14: 'test',
      field15: 'test' 
   }
]

我有这个 json 对象,我在 angularjs 的帮助下使用 ng-repeat 函数向客户端显示这个 json。

我有一个复选框和一个表格,我在表格中显示这个 json 数据。

如果我单击该复选框,我想从 json 中删除第一个对象。

预期输出:(如果我选中复选框)

[
      { 
         field1: '123456789',
         field2: 'Mohamed',
         field3: 'Sameer',
         field4: 'Salai',
         field5: 'Salai',
         field6: 'Asia',
         field7: '111111',
         field8: '10-10-10',
         field9: 'mohd@if.com',
         field10: 'ifelse',
         field11: 'ifelse',
         field12: 'India',
         field13: 'test',
         field14: 'test',
         field15: 'test' 
      },
      { 
         field1: '123456789',
         field2: 'Hameed',
         field3: 'Basha',
         field4: 'Salai',
         field5: 'Salai',
         field6: 'Asia',
         field7: '600091',
         field8: '10-10-10',
         field9: 'hameed@gmail',
         field10: 'ifelse',
         field11: 'ifelse',
         field12: 'India',
         field13: 'test',
         field14: 'test',
         field15: 'test' 
      }
]

如果用户没有检查,我想再次从 json 中获取第一个对象。

我的复选框代码:(Jade)

输入(类型='复选框')

我的用户界面:

【问题讨论】:

  • 为对象添加 isDisplay=true 标志。当您选中复选框时,请使其为假。在客户端使用 ng-show="isDisplay"
  • 我不想只是隐藏,我完全想删除 json,然后只有我可以跳过该对象插入服务器端。这可能吗?
  • 它工作了吗???

标签: javascript arrays angularjs json node.js


【解决方案1】:

可能对你有帮助!

     var d=[
           { 
              field1: 'gsm',
              field2: 'firstname',
              field3: 'lastname',
              field4: 'street',
              field5: 'city',
              field6: 'region',
              field7: 'postcode',
              field8: 'dob',
              field9: 'email',
              field10: 'company',
              field11: 'url',
              field12: 'country',
              field13: 'data1',
              field14: 'data2',
              field15: 'data3' 
           },

           { 
              field1: '123456789',
              field2: 'Mohamed',
              field3: 'Sameer',
              field4: 'Salai',
              field5: 'Salai',
              field6: 'Asia',
              field7: '111111',
              field8: '10-10-10',
              field9: 'mohd@if.com',
              field10: 'ifelse',
              field11: 'ifelse',
              field12: 'India',
              field13: 'test',
              field14: 'test',
              field15: 'test' 
           },
           { 
              field1: '123456789',
              field2: 'Hameed',
              field3: 'Basha',
              field4: 'Salai',
              field5: 'Salai',
              field6: 'Asia',
              field7: '600091',
              field8: '10-10-10',
              field9: 'hameed@gmail',
              field10: 'ifelse',
              field11: 'ifelse',
              field12: 'India',
              field13: 'test',
              field14: 'test',
              field15: 'test' 
           }
        ];
        var temp={};
         var app = angular.module('testApp',[]);
            app.controller('testCtrl',function($scope){
            $scope.data=d;
             
              $scope.checkbox_link=function(i){
                var ele=document.getElementById("checkbox_id");
                if(ele.checked==true){
                   if($scope.data.length>1){
                       temp=$scope.data[i];
                       $scope.data.splice(i,1);
                   }
                }else{                                   
                    $scope.data.splice(0,0,angular.copy(temp));
                   }
              }
            });
 table{
    width:100%;
    border-collapse:collapse;
    }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
        <div ng-app="testApp" ng-controller="testCtrl">
        <input type="checkbox"  ng-click="checkbox_link(0)" id="checkbox_id"/> skip first row
        {{temp}}
          <table border="1">
            <tr ng-repeat="d in data">
              <td>{{$index+1}} </td>
              <td>{{d.field1}} </td>
            </tr>
          </table>
        </div>

【讨论】:

  • 如果取消选中复选框,我需要再次:)
【解决方案2】:

试试这个:

var data = [
   { 
      field1: 'gsm',
      field2: 'firstname',
      field3: 'lastname',
      field4: 'street',
      field5: 'city',
      field6: 'region',
      field7: 'postcode',
      field8: 'dob',
      field9: 'email',
      field10: 'company',
      field11: 'url',
      field12: 'country',
      field13: 'data1',
      field14: 'data2',
      field15: 'data3' 
   },

   { 
      field1: '123456789',
      field2: 'Mohamed',
      field3: 'Sameer',
      field4: 'Salai',
      field5: 'Salai',
      field6: 'Asia',
      field7: '111111',
      field8: '10-10-10',
      field9: 'mohd@if.com',
      field10: 'ifelse',
      field11: 'ifelse',
      field12: 'India',
      field13: 'test',
      field14: 'test',
      field15: 'test' 
   },
   { 
      field1: '123456789',
      field2: 'Hameed',
      field3: 'Basha',
      field4: 'Salai',
      field5: 'Salai',
      field6: 'Asia',
      field7: '600091',
      field8: '10-10-10',
      field9: 'hameed@gmail',
      field10: 'ifelse',
      field11: 'ifelse',
      field12: 'India',
      field13: 'test',
      field14: 'test',
      field15: 'test' 
   }
]

然后在你的控制器中添加函数:

var deletedItem = [];
function onchangeCheckBox(isChecked) {
  if(isChecked && data.length > 0) {
    deletedItem = data.splice(0,1);
  } else if(deletedItem.length > 0 ){
    data.unshift(deletedItem[0]);
    deletedItem = [];
  }
}

当您取消选中复选框时,请执行以下操作:

data.unshift(deletedItem);
deletedItem = {};

【讨论】:

  • 你会发布复选框代码吗?我想在输入附近添加什么(type='checkbox')
  • 没有显示 onChange 没有定义?我想使用 angularjs 而不是 jquery
  • 好的,等会告诉你。
  • 发布我的玉码,更新你的答案会很有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多