Javascript AngularJS-在Jasmine指令单元测试中,如何在(“$destroy”事件上触发element.on?

Javascript AngularJS-在Jasmine指令单元测试中,如何在(“$destroy”事件上触发element.on?,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我必须在一个指令中向元素对象添加一个$destroy事件侦听器,这是我在这个答案中发现的 导致使用范围/元素生成链接函数 controller: "MyCtrl", link: function(scope, element) { element.on("$destroy", function() { scope.func(); }); } 其中func是在MyCtrl中定义的函数 这符合我的要求……但是我在测试(“$destroy”事件上的元素时遇到了

我必须在一个指令中向元素对象添加一个$destroy事件侦听器,这是我在这个答案中发现的

导致使用范围/元素生成链接函数

  controller: "MyCtrl",
  link: function(scope, element) {
    element.on("$destroy", function() {
      scope.func();
    });
  }
其中func是在MyCtrl中定义的函数

这符合我的要求……但是我在测试(“$destroy”事件上的
元素时遇到了问题

在我的指令测试中注入/模拟之后,我创建了如下元素

this.$compile = $injector.get("$compile");
this.$rootScope = $injector.get("$rootScope");
this.$scope = this.$rootScope.$new();
this.template = "<my-dir></my-dir>";
this.initElement = function() {
  this.element = this.$compile(this.template)(this.$scope);
  return this.element;
};
我认为我在这个单元测试中面临的问题与我将这个逻辑从ctrl移到directives链接函数的原因相同


关于如何在销毁工作流上测试此元素的任何帮助?

我的解决方案是使用此控制器定义的指令使用传入的$rootScope,这会将其破坏到销毁不会启动的位置

相反,我将指令更改为使用它自己的空范围进行初始化,如

 controller: "MyCtrl",
 scope: {}
是否相关?
 controller: "MyCtrl",
 scope: {}