ng-blur不是由ng-keyup触发的函数调用的

时间:2014-10-02 13:15:44

标签: angularjs ionic-framework

所以我有一个ng-blur功能,如果我这样做就会正确触发

  $scope.disableReturnButton = function($event){
    document.onkeyup=function(e) {

        if(e.which == 13){

          $event.target.blur();
          return false;
        }
    }
  }

但是,如果我尝试仅在元素上设置keyup事件,则在模糊事件发生时似乎不会触发ng-blur

  $scope.disableReturnButton = function($event){

    if($event.which == 13){
      $event.target.blur();// this blurs the element but doesn't trigger the ng-blur
      return false;
    }

  }

这是标记

<span contenteditable="true" class="blanks" 
  ng-blur="blurredWhy($event)"
  ng-focus="focusedWhy($event)" 
  ng-bind="data.why" 
  ng-keyup="disableReturnButton($event)"></span>

1 个答案:

答案 0 :(得分:0)

如果在事件处理程序中使用return false;,则使用jQuery将停止传播并阻止其他事件在链中触发。由于Angular使用jQuery lite(或者你在页面上也有jQuery完整版),返回false会杀死上游事件。

第一个例子可以工作,因为它使用了document.onkeyup,它在jQuery之外注册了事件监听器。

请参阅event.preventDefault() vs. return false