我写了一个指令,专注于动态表单中的第一个输入。我使用ng-include来包含包含表单输入的HTML文件。当应用程序最初加载时,焦点不起作用。如果我导航到其他页面,它工作正常。经过一些研究,我发现在执行指令时尚未加载HTML。
我目前的解决方案是使用$ timeout并将延迟设置为750毫秒。有没有更好的方法来延迟指令,直到HTML加载完成?我并不是将延迟设置为看似随意的值的忠实粉丝。我也尝试过ng-cloak,想想也许它会掩盖指令,直到ng-include得到解决,但它没有用。
指令代码:
angular.module('focusInput-directive', [])
.directive('focusInput', ['$timeout', function( $timeout ) {
return {
restrict: "A",
link: function (scope, element) {
$timeout(function () {
var field = element[0][0];
field.focus();
}, 750);
}
}
}]);
此指令在我的表单上,ng-include在HTML表单中。
谢谢!