如何有选择地运行ngBlur代码

时间:2015-11-02 05:47:18

标签: javascript angularjs

我有textareaspantextareangBlur调用函数。我只希望该函数在模糊的原因没有点击跨度时运行其代码。我怎么能这样做?

http://plnkr.co/edit/ENvuujbychxYum1EMmkf?p=preview

HTML

<!DOCTYPE html>
<html ng-app='app'>

  <head>
    <script data-require="angular.js@1.4.7" data-semver="1.4.7" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller='MainController as vm'>
    <textarea ng-blur='vm.selective()'></textarea>

    <span>span</span>
  </body>

</html>

JS

angular
  .module('app', [])
  .controller('MainController', MainController)
;

function MainController() {
  vm.focus = true;

  vm.onBlur = function() {
    // HOW DO I DO THIS?
    // if (spanIsClicked) {
    //   return;
    // }

    vm.focus = false;
  };
}

1 个答案:

答案 0 :(得分:0)

我相信你可以将DOM元素作为一个参数传递给angular,看起来像:

vm.onBlur = function($event){}

然后,您可以使用 event.target 来访问该活动。我知道这可以用ng-click工作,所以如果相同的规则适用于ng-blur,我不是完全正面的。