ng Blur和ng Focus无法一起使用

时间:2015-01-12 10:07:45

标签: angularjs angularjs-directive

如果用户输入无效(空)字符串,我需要创建一个预先填充的文本字段,该字段将重置为其初始值。为实现这一点,我有以下javascript:

  $scope.storeValueFor = function(object) {
    if(object && object.value) {
      $scope.fallback = object.value;
    }
  };

  $scope.updateValueFor = function(holder, object) {
    if(object.value && object.value.length > 0) {
      update(holder, object);
    } else {
      object.value = $scope.fallback;
    }
  };

我希望在将字段置于焦点时调用storeValueFor(),并在焦点丢失时调用updateValueFor()。这是我的HTML的相关部分:

          <input ng-model="object.value"
                 ng-show="!hideInput()"
                 ng-blur="updateValueFor(holder, object)"
                 ng-focus="storeValueFor(object)"
                 ng-minlength="1">
          <span ng-bind-html="formatString(object.value)" ng-hide="hideInput()"></span>

现在,我的问题是只有top指令(ng-blur或ng-focus)实际上是活动的。换句话说,这里将调用updateValueFor(),而不是storeValueFor()。如果我改变它以使ng-focus位于顶部,那么将是另一种方式。

我找到了这个组合here的一个工作示例,但是当我用这里看到的内联函数替换我的函数调用时,行为仍然存在。

有没有人知道会导致这种情况的原因?

编辑:事实证明,此行为仅显示在我用于开发的Chrome实例上,因此安装了AngularJs Batarang。禁用此扩展程序可以解决此问题。有人能告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

事实证明,这种行为只会出现在我用于开发的Chrome实例上,因此安装了AngularJs Batarang。禁用此扩展程序可以解决问题。