如何防止ngBlur先发射

时间:2016-04-15 09:01:05

标签: javascript angularjs

据说我有一个像这样的输入文本标记:

<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 个答案:

答案 0 :(得分:1)

有点黑客将你的ngBlur放在$timeout推回一个摘要中。

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

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