指令不再适用于Angular 1.3

时间:2014-10-23 06:49:17

标签: javascript angularjs coffeescript

昨天,我已将Angular Js更新到最新版本1.3,但只是将焦点放在输入文本上的简单指令不再起作用。这里是coffeescript中的代码:

# activate the focus to an element
angular.module('dbManagerApp').directive 'riumFocusOn', ->

    scope:
        trigger: '=riumFocusOn'
    link: (scope, elem, attr) ->

        scope.$watch 'trigger', (value) ->

            elem[0].focus() if value

调试代码,它像以前一样通过focus()方法但在网页中不会出现光标。 任何人都可以帮助我理解为什么它停止工作?看看Angular的更改日志,我还没有看到任何可能包含我的问题的点。

更新

这里是示例Plunker

我想按下"添加项目"链接,焦点将转到下面显示的输入文本。我试图将Angular更改为1.2,但仍然没有在Plunker中工作,但在我的项目中工作..

2 个答案:

答案 0 :(得分:0)

我真的不知道你用“观看”触发器观看了什么,但是如果它只是在一个元素自动对焦的时候beeing显示你可以随时使用"自动对焦"如果它可以在<< IE10。

<input autofocus id="edit--menu__input" rium-escape-input="" ... />

答案 1 :(得分:0)

我已经用这种方式修正了指令:

app.directive('riumFocusOn', function() {
    return {
      link: function(scope, elem, attrs) {

        var model = attrs.riumFocusOn;

        scope.$watch(model, function(value) {
          if (value === true) {
              setTimeout(function() {
                 elem[0].focus();
              }, 200);

          }
        });
      }
    };
  });

现在它可以像以前一样正常更新到Angular 1.3