1

我想测试我的角度指令,它是 slickgrid 的包装器。

'use strict';
describe('Unit: Grid Directive', function() {
  var $scope;
  var element;

  beforeEach(module('grid'));
  beforeEach(inject(function($compile, $rootScope) {
    $scope = $rootScope;    
    element = angular.element('<grid class="slickgrid-table" id="miscGrid" query="query"/>');
    $scope.query = { symbol: 'AAAA' };
    $compile(element)($scope);
    $scope.$digest();
  }));

问题是 slickgrid 使用 jquery 来查找它应该在哪里插入它的网格的 id。

Error: SlickGrid requires a valid container, #miscGrid does not exist in the DOM.

我的问题是,我怎样才能让它工作?我怎样才能“欺骗” slickgrid 以意识到我要编译的元素是一个有效的容器?

4

1 回答 1

1

在大多数情况下,我发现将元素附加到 DOM 而不是欺骗任何东西更容易。根据项目 gitithub 中的示例,控件需要在 DOM 中才能正确初始化(http://mleibman.github.io/SlickGrid/examples/example-explicit-initialization.html

我倾向于将以下几行放在任何指令规范中

var sandbox;
beforeEach(function() { sandbox = angular.element('<div>'); angular.element(document.body).append(sandbox); });
afterEach(function() { sandbox.remove(); sandbox = null; });

然后在编译之前将指令附加到沙箱。

于 2013-10-09T09:24:08.013 回答