Angularjs 将UI网格行数据发送到Textarea

Angularjs 将UI网格行数据发送到Textarea,angularjs,selection,Angularjs,Selection,以下是我的角度脚本: angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.selection']) .controller('MainCtrl', ['$scope', function ($scope) { var vm = this; vm.gridOptions = { multiSelect:false}; vm.reset = reset; function reset() { vm.gridOpt

以下是我的角度脚本:

angular.module('app',  ['ngTouch', 'ui.grid', 'ui.grid.selection'])

.controller('MainCtrl', ['$scope', function ($scope) {
  var vm = this;

  vm.gridOptions = { multiSelect:false};

  vm.reset = reset;
  function reset() {
    vm.gridOptions.mydata = [];
    vm.gridOptions.columnDefs = [];
  }              
}])

.directive("fileread", [function () {
  return {
    scope: {
      opts: '='
    },
    link: function ($scope, $elm, $attrs) {
      $elm.on('change', function (changeEvent) {
        var reader = new FileReader();

        reader.onload = function (evt) {
          $scope.$apply(function () {
            var mydata = evt.target.result;

            var workbook = XLSX.read(mydata, {type: 'binary'});

            var headerNames = XLSX.utils.sheet_to_json( workbook.Sheets[workbook.SheetNames[0]], { header: 1 })[0];

            var mydata = XLSX.utils.sheet_to_json( workbook.Sheets[workbook.SheetNames[0]]);

            $scope.opts.columnDefs = [];
            headerNames.forEach(function (h) {
              $scope.opts.columnDefs.push({ field: h });
            });

            $scope.opts.data = mydata;

            $elm.val(null);
          });
        }

        reader.readAsBinaryString(changeEvent.target.files[0]);
      });
    }
  }
}]);

app.controller('MainCtrl', ['$scope', '$http', '$interval', 'uiGridConstants', function ($scope, $http, $interval, uiGridConstants) {

  $scope.mySelections = [];


  $scope.gridOptions.multiSelect = false;
  $scope.gridOptions.modifierKeysToMultiSelect = false;
  $scope.gridOptions.noUnselect = true;
  $scope.gridOptions.onRegisterApi = function( gridApi ) {
        $scope.gridApi = gridApi;
         $scope.gridApi.selection.on.rowSelectionChanged($scope, function(rows) {
         $scope.mySelections = $scope.gridOptions.data[0];
        var v =  {mySelections};
        var z = document.getElementById("t");
        z.innerHTML.append = v;

        });

  }

  $scope.toggleRowSelection = function() {
    $scope.gridApi.selection.clearSelectedRows();
    $scope.gridOptions.enableRowSelection = !$scope.gridOptions.enableRowSelection;
    $scope.gridApi.core.notifyDataChange( uiGridConstants.dataChange.OPTIONS);
  };

  $http.get('/mydata/500_complex.json')
    .success(function(mydata) {
      $scope.gridOptions.data = mydata;
      $scope.gridOptions.multiSelect.data = false;        

      // $interval whilst we wait for the grid to digest the data we just gave it
      $interval( function() {
          $scope.gridApi.selection.selectRow($scope.gridOptions.data[0]);}, 0, 1);
          $scope.mySelections = $scope.gridOptions.data[0];
        var v =  {mySelections};
        var z = document.getElementById("t");
        z.innerHTML.append = v;    
    });
}]);
以下是我的HTML代码:

<!DOCTYPE html>
<html ng-app="app">

  <head>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-touch.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
    <script src="https://cdn.rawgit.com/SheetJS/js-xlsx/v0.8.0/dist/xlsx.full.min.js"></script>
    <script src="https://cdn.rawgit.com/SheetJS/js-xlsx/v0.8.0/dist/ods.js"></script>
    <script src="http://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/release/3.0.0-rc.22/ui-grid.min.js"></script>
    <link rel="stylesheet" href="http://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/release/3.0.0-rc.22/ui-grid.min.css" />
    <link rel="stylesheet" href="main.css" type="text/css" />
  </head>

  <body>
    <div ng-controller="MainCtrl as vm">
      <button type="button" class="btn btn-success" ng-click="vm.reset()">Reset Grid</button>
      <br />
      <br />
      <div id="grid1" ui-grid="vm.gridOptions" ui-grid-selection class="grid">
        <div class="grid-msg-overlay" ng-show="!vm.gridOptions.data.length">
          <div class="msg">
            <div class="center">
              <span class="muted">Select Spreadsheet File</span>
              <br />
              <input type="file" accept=".xls,.xlsx,.ods" fileread="" opts="vm.gridOptions" multiple="false" />
            </div>
          </div>
        </div>
      </div>
    </div>

<script src="app.js"></script>
 <br />
 **<textarea id = "t" style="width:100%"></textarea>**
 <br/>
     <button id="copy" name="copy" type="button" class="btn btn-success" ng-click="vm.copy()">Copy</button>
  </body>

</html>

重设网格


选择电子表格文件

****
复制
我想在
textarea
中显示所选行。 一次选择行,但无法在文本区域显示数据?
由于我是初学者,欢迎提出任何建议。

请突出显示代码的相关部分,不要提供完整的代码。我想将选中的行从UI网格显示到textarea中。这不是我要求的。您似乎没有在控制器中为
vm.copy
编写任何内容。我之前写过类似于在textarea中显示选中行的内容:function copy(){var v=$scope.mySelections;var z=document.getElementById(“t”);z.innerHTML=v;}请突出显示代码的相关部分,不要提供完整代码。我想将选定行从UI网格显示到textarea。这不是我要求的。您似乎没有在控制器中为
vm.copy
编写任何内容。我之前编写过类似于:function copy()的文本区域中显示选定行的代码{var v=$scope.mySelections;var z=document.getElementById(“t”);z.innerHTML=v;}