Как вы можете выборочно запустить код ngBlur

0

У меня есть textarea и span. textarea имеет ngBlur, которая вызывает функцию. Я хочу, чтобы эта функция запускала свой код, когда причиной размытия не было щелчка на пробеле. Как я могу это сделать?

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

HTML

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

  <head>
    <script data-require="[email protected]" 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

Я считаю, что вы можете передать элемент DOM в качестве аргумента в угловатом виде:

vm.onBlur = function($event){}

Затем вы можете получить доступ к событию, используя event.target. Я знаю, что это работает с ng-click, поэтому я не совсем уверен, если для ng-blur применяются одни и те же правила.

  • 0
    Вы можете сделать это с помощью ngBlur , но event.target всегда является textarea ; это не говорит Вам, нажал ли я span .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню