У меня есть 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;
};
}
Я считаю, что вы можете передать элемент DOM в качестве аргумента в угловатом виде:
vm.onBlur = function($event){}
Затем вы можете получить доступ к событию, используя event.target. Я знаю, что это работает с ng-click, поэтому я не совсем уверен, если для ng-blur применяются одни и те же правила.
ngBlur
, ноevent.target
всегда являетсяtextarea
; это не говорит Вам, нажал ли яspan
.