die folgende Anweisung gegebenTesting focus() auf ein Element in einer AngularJS Richtlinie Vorlage
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');
};
}
};
});
ich getestet habe, dass der Fokus-Beobachter in einem Browser funktioniert, aber ich möchte in der Lage sein, es zu triggern in einem Komponententest. Dies ist, was ich versucht habe, aber es funktioniert nicht.
var element = angular.element('<div my-directive></div>');
$compile(element)($scope);
$scope.$digest();
element.find('input')[0].focus();
Ich kann sehen, dass ich mit dem Fund Aufruf an das Eingabefeld richtig bin immer, und ich mag, dass Code erwarten, dass das Fokus-Ereignis auf dem Eingabefeld auszulösen, aber nichts geschieht. Was fehlt mir hier?
Ich glaube nicht, dass zeigt tun müssen, um 'element.find ('input') 'das Element _ist_ das Eingabe-Tag – dcodesmith
Replace wird auf false gesetzt. 'Element' ist das Div und in ihm enthalten ist das Input-Tag. – grivescorbett
Oh, ich habe diesen Teil verpasst – dcodesmith