我的指令链接功能如下 -
link:function(scope,elem,attr){
$(document).on("click",function(event){
var target = $(event.target);
if(target.is('.detailBox') || target.closest('.detailBox').length){
return;
}
scope.$emit('closeDetailBox');
scope.$apply();
});
}
我的用于测试发射的茉莉花TC如下 -
it('Some other box click', function () {
spyOn($rootScope, '$emit');
var theboxelement = '<button class="thebox"></button>';
var thebox = $(theboxelement);
$('body').append(thebox);
var spyEvent = spyOnEvent('.thebox', 'click');
thebox.trigger("click");
expect($rootScope.$emit).toHaveBeenCalledWith('closeDetailBox',theboxelement);
thebox.remove();
});
应该触发并捕获emit事件,但它从未被触发过。我得到了错误 - “预期的间谍$ emit已被调用['closeDetailBox',''],但它从未被调用过。”
我从2天开始处理这个问题,无法得到修复,请帮助!
答案 0 :(得分:2)
根据您的代码,我认为您需要调用链接功能。然后做其余的事。像mydirective.link();这将解决您进行的以下函数调用。
如果以上项目不起作用,您可以检查以下项目 -
查看您的模块依赖关系是否正确解析。
利用本地茉莉花调试。这可能是检查流量的最简单方法。
答案 1 :(得分:0)
根据您的指令,您的事件将从您的指令范围发出。你确定这会触发$ rootScope的$ emit函数吗?
也许你应该在$ rootScope上使用$ broadcast?