2016-04-15 54 views
1

按说我有一个输入文本类似这样的标记:如何防止ngBlur从射击第一

<input type="text" ng-focus="x = true" ng-blur="x = false"> 

所以,当你点击它,这个div显示出来:

<div ng-show="x === true"> 
    <ul> 
     <li ng-click="choose(1)">First</li> 
     <li ng-click="choose(2)">Second</li> 
     <li ng-click="choose(3)">Third</li> 
    </ul> 
</div> 

会发生什么事,当我是点击列表中的一个选项,该div将变为隐藏状态,因为文本字段中的ng-blur被触发,因此选择中的ng-click不会被执行(或者在我的情况下会发生这种情况)。有没有解决方法?谢谢。

回答

1

有点破解会让你的ngBlur$timeout推回一个摘要。

<input type="text" ng-focus="x = true" ng-blur="hideFields()"> 

function hideFields() { 
    $timeout(function() { 
     $scope.x = false; 
    }); 
} 
+0

很酷。我会尝试这个并报告回来。 – Growlithe

+0

不,不起作用。在函数中没有定时器,它的启动速度比'ng-click'还要快[ – Growlithe

+0

]有了超时,你需要设置一些延迟,模糊事件总是在点击之前发生,它不是Angular,而是DOM事件的工作方式。 – dfsq