我希望这是一个简单的问题。
我有一个选择框指令,应该在指令外点击任何东西时关闭。因此,窗口有一个事件监听器,一旦听到点击事件,就会隐藏该框-
$window.addEventListener('click', function() {
$scope.expanded = false;
$scope.$apply();
});
这个功能很好用,没有任何抱怨。但是我正在尝试为此编写单元测试,但无法弄清楚如何触发window本身的点击事件。
it('should close the dropdown if the window is clicked', function() {
toggleButton.trigger('click');
expect(eleSimpleOptionBox.hasClass('ng-hide')).toBe(false);
$window.trigger('click');
expect(eleSimpleOptionBox.hasClass('ng-hide')).toBe(true);
});
我尝试了以下内容 -
$window.trigger('click'); // as well as .click()
$window.triggerHandler('click');
angular.element('body').trigger('click'); // as well as .click()
someWrappingElement.trigger('click'); // as well as .click()
$scope
还是根作用域$rootScope
上调用$digest
方法? - Yaron Schwimmer$digest
的情况下工作,因此我认为第二个也可以。它使用的是 DOM 的事件监听器而不是 Angular 的事件监听器。 - micah