【问题标题】:Moving data table to table in AngularJS在AngularJS中将数据表移动到表
【发布时间】:2017-01-06 10:20:36
【问题描述】:

如何使用按钮将表格行数据从一个表格移动到另一个表格。

最终移动数据后,如果我单击提交按钮,我想在数组中获取右侧表键值。

链接:http://jsfiddle.net/A6bt3/111/

Js:

var app = angular.module('myApp', []); 
function checkBoxCtrl($scope){ 
   $scope.tableOne=[
        {key: '1',  value: 'a'},
        {key: '2',  value: 'b'},
        {key: '3',  value: 'c'},
        {key: '4',  value: 'd'}
    ];  

    $scope.btnRight = function () {

    }
    $scope.btnAllRight = function () {

    }
    $scope.btnLeft = function () {

    }
    $scope.btnAllLeft = function () {

    } 
    $scope.submit = function () {

    } 
};

HTML:

     <span>Table One</span> 
     <div ng-controller="checkBoxCtrl">
     <table width="400" border="1">
     <tr ng-repeat="data in tableOne" id="item{{data.key}}">
        <td width="20px">
            <input type="checkbox" ng-model="data.checked">
        </td>
        <td>{{data.key}}</td>
        <td>{{data.value}}</td>
    </tr>
    </table>
    <br> 
      <div class="">
          <input id="btnRight" type="button" value=">" class="listBoxButton"  ng-click="btnRight()" />
          <br/>
          <input id="btnAllRight" type="button" value=">>"  class="listBoxButton"  ng-click="btnAllRight()" />
          <br/>
          <input id="btnAllLeft" type="button" value="<<" class="listBoxButton"  ng-click="btnAllLeft()" />
          <br/>
          <input id="btnLeft" type="button" value="<" class="listBoxButton" ng-click="btnLeft()" />
       </div>
       <span>Table Two</span> 
      <table width="400" border="1">
    <tr ng-repeat="data in tableOne | filter: {checked:true}">
        <td> <input type="checkbox" ng-model="data.checked"></td>
        <td>{{data.key}}</td>
        <td>{{data.value}}</td>
    </tr>
</table>
    <input id="sbt" type="button" value=">" class=""  ng-click="submit()" />

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    请检查cmets

    html : 你的第二张桌子是tableTwo 而不是tableone

    <table width="400" border="1">
        <tr ng-repeat="data in tableTwo">
          <td>
            <input type="checkbox" ng-model="data.checked">
          </td>
          <td>{{data.key}}</td>
          <td>{{data.value}}</td>
        </tr>
      </table>
    

    脚本:

    var app = angular.module('myApp', []);
    function checkBoxCtrl($scope) {
        $scope.tableOne = [{
                key: '1',
                value: 'a'
            }, {
                key: '2',
                value: 'b'
            }, {
                key: '3',
                value: 'c'
            }, {
                key: '4',
                value: 'd'
            }
        ];
        $scope.tableTwo = [];//the table to be submitted
        function removeitems(tableRef) { //revmove items from tableRef
            var i;
            for (i = tableRef.length - 1; i >= 0; i -= 1) {
                if (tableRef[i].checked) {
                    tableRef.splice(i, 1);
                }
            }
        }
        $scope.btnRight = function () {
           //Loop through tableone
            $scope.tableOne.forEach(function (item, i) {
               // if item is checked add to tabletwo
                if (item.checked) {
                    $scope.tableTwo.push(item);
                }
            })
            removeitems($scope.tableOne);
        }
        $scope.btnAllRight = function () {
            $scope.tableOne.forEach(function (item, i) {
                item.checked = true;
                $scope.tableTwo.push(item);
            })
            removeitems($scope.tableOne);
        }
        $scope.btnLeft = function () {
            $scope.tableTwo.forEach(function (item, i) {
                if (item.checked) {
                    $scope.tableOne.push(item);
                }
            })
            removeitems($scope.tableTwo);
        }
        $scope.btnAllLeft = function () {
            $scope.tableTwo.forEach(function (item, i) {
                item.checked = true;
                $scope.tableOne.push(item);
            })
            removeitems($scope.tableTwo);
        }
        $scope.submit = function () {
            alert(angular.toJson($scope.tableTwo))
        }
    };
    

    【讨论】:

    • 哇..真的很棒
    • 我还需要一件事...我想将第二个表名存储为数组。单击该提交按钮后,我想在表格下方显示带有关闭按钮的名字。链接:jsfiddle.net/A6bt3/112
    • 嗨,我没听明白。所以你有tabletwo和你的详细信息要提交。用关闭按钮显示名字是什么意思?
    【解决方案2】:

    更新了你的小提琴:

    http://jsfiddle.net/y1zosxo6/2/

    HTML:
    
        <span>Table One</span>
    
    <div ng-controller="checkBoxCtrl">
        <table width="400" border="1">
            <tr ng-repeat="data in tableOne" id="item{{data.key}}">
                <td width="20px">
                    <input type="checkbox" ng-model="data.checked">
                </td>
                <td>{{data.key}}</td>
                <td>{{data.value}}</td>
            </tr>
        </table>
        <br> 
        <div class="">
          <input id="btnRight" type="button" value=">" class="listBoxButton"  ng-click="btnRight()" />
                                            <br/>
          <input id="btnAllRight" type="button" value=">>"  class="listBoxButton"  ng-click="btnAllRight()" />
                                            <br/>
          <input id="btnAllLeft" type="button" value="<<" class="listBoxButton"  ng-click="btnAllLeft()" />
                                            <br/>
        <input id="btnLeft" type="button" value="<" class="listBoxButton" ng-click="btnLeft()" />
         </div>
    <span>Table Two</span>
    
        <table width="400" border="1">
            <tr ng-repeat="data in table2 ">
                <td> <input type="checkbox" ></td>
                <td>{{data.key}}</td>
                <td>{{data.value}}</td>
            </tr>
        </table>
    
    JS:
    
        var app = angular.module('myApp', []);
    
    function checkBoxCtrl($scope){
    
        $scope.tableOne=[
                        {key: '1',  value: 'a'},
                        {key: '2',  value: 'b'},
                        {key: '3',  value: 'c'},
                        {key: '4',  value: 'd'}
                        ];  
              $scope.table2=[];
    
              $scope.btnRight = function () {
    
              }
               $scope.btnAllRight = function () {
                $scope.table2=$scope.tableOne;
                $scope.tableOne=[];
               }
                $scope.btnLeft = function () {
    
                }
               $scope.btnAllLeft = function () {
               $scope.tableOne=$scope.table2;
               $scope.table2=[];
               }
    
    
        };
    

    但是,我不了解“btnRight”和“btnLeft”的功能。点击时,您要移动第一项还是最后一项?

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 1970-01-01
      • 2019-06-08
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2012-09-17
      相关资源
      最近更新 更多