Javascript AngularJS-模糊延迟

Javascript AngularJS-模糊延迟,javascript,angularjs,Javascript,Angularjs,我有以下资料: <div class="staff"> <input ng-model="user" ng-focus="isFocused = true;" ng-blur="isFocused = false;/> <div class="matches" ng-if="isFocused"> <div class="user" ng-re

我有以下资料:

<div class="staff">

    <input ng-model="user" 
            ng-focus="isFocused = true;"
            ng-blur="isFocused = false;/>

    <div class="matches" ng-if="isFocused">
        <div class="user" 
            ng-repeat="match in users | filter:user" 
            ng-bind="match"
            ng-click="user = match">
        </div>
    </div>

</div> 
我真的更喜欢第一种选择。有什么我能做的吗?


<div class="staff">
    <input ng-model="user" 
            ng-focus="isFocused = true;"
            ng-blur="focusOut()"/>

    <div class="matches" ng-if="isFocused">
        <div class="user" 
            ng-repeat="match in users | filter:user" 
            ng-bind="match"
            ng-click="user = match">
        </div>
    </div>
</div> 

link: function(scope, element, attrs){
    scope.focusOut = function(){
        $timeout(function(){
            scope.isFocused = false;
        }, 125);
    });
}
链接:函数(范围、元素、属性){ scope.focusOut=函数(){ $timeout(函数(){ scope.isFocused=false; }, 125); }); }
你是说它会在点击事件触发之前消失?@snowman4415,是的。第一种方法是在
ng blur
(立即)发生时将
isFocused
设置为false。因此,如果我“点击”一个匹配项,那么我已经模糊了,因此模糊被触发,我不能点击。我个人认为指令是最优雅的解决方案,因为我能想到的任何其他方法都更令人讨厌。通过像你一样使用ng if和ng模糊,真的没有办法解决它。还有,你用ng而不是ng躲在这里有什么原因吗?@snowman4415,是的,我想你是对的。原因是我每页都有很多这样的用户,每个用户都有自己的匹配项。我使用ng if将其从体内移除,以减少DOM的总数。
<div class="staff">
    <input ng-model="user" 
            ng-focus="isFocused = true;"
            ng-blur="focusOut()"/>

    <div class="matches" ng-if="isFocused">
        <div class="user" 
            ng-repeat="match in users | filter:user" 
            ng-bind="match"
            ng-click="user = match">
        </div>
    </div>
</div> 

link: function(scope, element, attrs){
    scope.focusOut = function(){
        $timeout(function(){
            scope.isFocused = false;
        }, 125);
    });
}