2016-04-15 84 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