在 ng-switch 中创建一个 handsontable

Create a handsontable in ng-switch

我想在 ng-switch 中使用 handsontable:当我们 select handsontable 时,它显示正常和 editable handson table.

JSBin

HTML:

<!DOCTYPE html>
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script src="https://docs.handsontable.com/pro/1.8.2/bower_components/handsontable-pro/dist/handsontable.full.min.js"></script>
  <link type="text/css" rel="stylesheet" href="https://docs.handsontable.com/pro/1.8.2/bower_components/handsontable-pro/dist/handsontable.full.min.css">
</head>
<body ng-app="">
  <select ng-model="myVar">
    <option value="dogs">Dogs
    <option value="handsontable">handsontable
  </select>

  <div ng-switch="myVar">
    <div ng-switch-when="dogs">
     <p>Welcome to a world of dogs.</p>
    </div>
    <div ng-switch-when="handsontable">
      <div id="example1" class="hot handsontable htRowHeaders htColumnHeaders"></div>
    </div>
  </div>
</body>
</html>

JavaScript:

var example1 = document.getElementById('example1');
var settings1 = { data: [['A1', 'B1'], ['A2', 'B2']] };
var hot1 = new Handsontable(example1, settings1);

this working example 不同,table 中的单元格不是 editable。所以我想知道是否缺少某些东西。例如,在工作示例中,table 的创建由 document.addEventListener("DOMContentLoaded", function() { ... }) 包装,我是否应该在此示例中用某些东西包装 javascript 代码以确保我们创建 table 只有在我们 ng-switch 到 handsontable?

之后

所以正如@Mistailis 建议的那样,我们可以使用 ngHandsontable

JSBin

HTML:

<!DOCTYPE html>
<html>
<head>
  <base href="http://handsontable.github.io/ngHandsontable/node_modules/">
  <link rel="stylesheet" href="handsontable/dist/handsontable.full.css">
  <script src="angular/angular.js"></script>
  <script src="handsontable/dist/handsontable.full.js"></script>
  <script src="../dist/ngHandsontable.js"></script>
</head>
<body ng-app="app">
  <select ng-model="myVar">
    <option value="dogs">Dogs
    <option value="handsontable">handsontable
  </select>

  <div ng-switch="myVar">
    <div ng-switch-when="dogs">
     <p>Welcome to a world of dogs.</p>
    </div>
    <div ng-switch-when="handsontable">
      <div ng-controller="MainCtrl as ctrl">
        <hot-table datarows="ctrl.db.items"></hot-table>
      </div>
    </div>
  </div>
</body>
</html>

JavaScript:

function dataFactory () { };
dataFactory.$inject = [];
angular.module('ngHandsontable').service('dataFactory', dataFactory);

function MainCtrl(dataFctory) {
  this.db = { items: [[5, 6], [7, 8]] };
}
MainCtrl.$inject = ['dataFactory'];

angular
  .module('app', ['ngHandsontable'])
  .controller('MainCtrl', MainCtrl);