HTML5: How to set focus on a text input in a list with AngularJS

后端 未结 4 1460
闹比i
闹比i 2020-12-11 18:37

I use AngularJS with the ng-repeat directive to show an array of objects as a list.

  • 4条回答
    •  情书的邮戳
      2020-12-11 18:41

      Here is another directive implementation that uses attrs.$observe:

      myApp.directive('focus', function () {
        return function (scope, element, attrs) {
          attrs.$observe('focus', function (newValue) {
            newValue === 'true' && element[0].focus();
            // or, if you don't like side effects (see @Christophe's comment):
            //if(newValue === 'true')  element[0].focus();
          });
        }
      });
      

      Note that an interpolated DOM attribute value (i.e., {{cue.isNewest}}) always evaluates to a string, hence the reason newvalue is compared to the string 'true' rather than keyword true.

      HTML:

      {{cue.isNewest}}
      

      This fiddle also has a method to toggle which item in the array should have the focus.

      Note that if you do not load jQuery, we need to use element[0].focus() in the link function (not element.focus()) becaues jqLite doesn't have a focus() method.

    提交回复
    热议问题