考虑以下指令:
directive('myDirective', function() {
return {
restrict: 'A',
scope: {},
replace: false,
template: '<input ng-focus="onFocus()" type="text" />',
link: function(scope, element, attr) {
scope.onFocus = function() {
console.log('got focus');
};
}
};
});
我测试过在浏览器中聚焦监视器的工作,但我希望能够在单元测试中触发它。这是我尝试过的内容,但它没有起作用。
var element = angular.element('<div my-directive></div>');
$compile(element)($scope);
$scope.$digest();
element.find('input')[0].focus();
我可以看到用find函数成功找到了输入框,预期代码会触发输入框的focus事件,但是却没有任何反应。我错过了什么吗?
element.find('input').triggerHandler('focus')
; - dcodesmith$(element.find('input')[0]).triggerHandler('focus');
。 - grivescorbett