gpt4 book ai didi

javascript - 在 AngularJS 指令模板中的元素上测试 focus()

转载 作者:数据小太阳 更新时间:2023-10-29 04:58:12 25 4
gpt4 key购买 nike

给定以下指令

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 调用正确地进入了输入框,并且我希望该代码触发输入框上的焦点事件,但什么也没有发生。我在这里缺少什么?

最佳答案

当尝试在 Angular 元素上触发事件时,应该使用 triggerHandler()函数,它只是真正的 jqLit​​e 函数而不是 Angular 函数,然后将事件作为字符串参数传递,如下所示。

element.find('input').triggerHandler('focus');

要对 Angular 元素执行任何其他功能,请阅读文档 here , 它向您显示了 Angular 元素可用的函数列表

关于javascript - 在 AngularJS 指令模板中的元素上测试 focus(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21411003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com