2015-11-02 69 views
0

我有textareaspantextarea有一个调用函数的ngBlur。当模糊的原因不是点击跨度时,我只想让该函数运行其代码。我怎样才能做到这一点?如何选择性运行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; 
    }; 
} 

回答

0

我相信你可以在DOM元素通过在角的说法,看起来像:

vm.onBlur = function($event){} 

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

+0

你可以用'ngBlur'来做到这一点,但'event.target'总是'textarea';它不会告诉你我是否点击了“span”。 –