首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击复选框时从json中删除第一个对象- AngularJs + NodeJs

单击复选框时从json中删除第一个对象- AngularJs + NodeJs
EN

Stack Overflow用户
提问于 2018-01-11 13:34:05
回答 2查看 112关注 0票数 0

这是我的JSON对象:

代码语言:javascript
复制
[
   { 
      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中删除第一个对象。

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

代码语言:javascript
复制
[
      { 
         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)

输入(type=‘checkbox’)

我的UI:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-11 13:49:29

它可能对你有帮助!

代码语言:javascript
复制
     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));
                   }
              }
            });
代码语言:javascript
复制
 table{
    width:100%;
    border-collapse:collapse;
    }
代码语言:javascript
复制
        <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>

票数 1
EN

Stack Overflow用户

发布于 2018-01-11 13:42:58

试试这个:

代码语言:javascript
复制
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' 
   }
]

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

代码语言:javascript
复制
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 = [];
  }
}

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

代码语言:javascript
复制
data.unshift(deletedItem);
deletedItem = {};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48200360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档