1

slickgrid のラッパーである angular ディレクティブをテストしたいと思います。

'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 に追加する方が簡単であることがわかりました。プロジェクトの github の例によると、とにかく適切に初期化するには、コントロールを 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 に答える