一尘不染

输入自动对焦属性

angularjs

我在代码中有以下位置:

<input data-ng-disabled="SOME_SCOPE_VARIABLE" />

我也希望能够像这样使用它:

<input data-ng-autofocus="SOME_SCOPE_VARIABLE" />

甚至更好,模仿ng样式的完成方式:

<input data-ng-attribute="{autofocus: SOME_SCOPE_VARIABLE}" />

当前版本的AngularJS中是否存在?我在代码中注意到有一个BOOLEAN_ATTR,它获取了AngularJS支持的所有attr。我不想修改它,以免更改版本并忘记更新。


阅读 176

收藏
2020-07-04

共1个答案

一尘不染

更新
:AngularJS现在有一个ngFocus指令,该指令可以
焦点 的表达式进行求值,但是为了完整起见,我在这里提到它。


当前版本的AngularJS没有focus指令,但是它在路线图中。巧合的是,我们昨天在邮件列表中谈论了这个,我想到了这个:

angular.module('ng').directive('ngFocus', function($timeout) {
    return {
        link: function ( scope, element, attrs ) {
            scope.$watch( attrs.ngFocus, function ( val ) {
                if ( angular.isDefined( val ) && val ) {
                    $timeout( function () { element[0].focus(); } );
                }
            }, true);

            element.bind('blur', function () {
                if ( angular.isDefined( attrs.ngFocusLost ) ) {
                    scope.$apply( attrs.ngFocusLost );

                }
            });
        }
    };
});

可以根据您的要求使用范围变量:

<input type="text" ng-focus="isFocused" ng-focus-lost="loseFocus()">

这是一个小提琴:http :
//jsfiddle.net/ANfJZ/39/

2020-07-04