ngFocus在AngularJS

时间:2016-01-21 12:42:07

标签: javascript angularjs html5 angularjs-scope

以下是我的代码片段,其中我需要根据复选框值来聚焦输入字段,如果我选中复选框,它应该聚焦第二个元素,它不知何故不起作用。让我知道我在Angular中做错了什么。

注意 - 我已经使用指令检查了几个例子,但我想知道我在这里缺少的概念/代码等

<input type="checkbox" ng-model="vm.check" />
<br>
<input type="text" ng-model="vm.input1" />
<input type="text" ng-model="vm.input2" ng-focus="vm.check" />
<input type="text" ng-model="vm.input3" />

Plnkr代码 - http://plnkr.co/edit/q15Jht9AsVj60xrutVfm?p=preview

2 个答案:

答案 0 :(得分:7)

ngFocus无法按照您的想法运作。 ngFocus下的表达式是在输入焦点上触发的,就是全部。

如果要根据var的状态对其进行聚焦,则应使用指令。示例:

myApp.directive('syncFocusWith', function($timeout, $rootScope) {
  return {
    restrict: 'A',
    scope: {
      focusValue: "=syncFocusWith"
    },
    link: function($scope, $element, attrs) {
      $scope.$watch("focusValue", function(currentValue, previousValue) {
        if (currentValue === true && !previousValue) {
          $element[0].focus();
        } else if (currentValue === false && previousValue) {
          $element[0].blur();
        }
      })
    }
  }
});

并更新您的html以使用此指令:

<input type="text" ng-model="vm.input2" sync-focus-with="vm.check"/>

Updated plunkr

Alex from Emberex.com分享此代码段的信用。

答案 1 :(得分:5)

ng-focus用于

  

指定焦点事件的自定义行为

不要设置焦点。

检查angular-docs

要满足您的情况,请参阅here