Подтвердить что ты не робот

Angular: обновление области при наведении

Я бы хотел, чтобы какой-либо дочерний div основного div был скрыт по умолчанию, когда вы наводили указатель на главный div.

Я пытаюсь иметь этот родник в angular и забыть способ .hover() в jquery.

Я хотя об использовании ng-show в дочернем div, а затем обновляю привязку, когда нахожу главный div. Есть ли директива для прослушивания для зависания?

4b9b3361

Ответ 1

Ты на правильном пути. Фактически вы можете использовать директивы ngMouseenter и ngMouseleave.

<span ng-mouseenter="show = true" ng-mouseleave="show = false">
  Mouse over me.
</span>

<div ng-show="show">Hello!</div>

Здесь работает Plunker: http://plnkr.co/edit/Ro80nR7HT7OGGPCXjz7E?p=preview

@Swordfish0321 также прав - вы можете написать очень простую директиву для прослушивания специально для зависания, если хотите, но это может и не понадобиться. Например, мы используем mouseenter и mouseleave для всплывающих подсказок в UI Bootstrap.

Ответ 2

Спасибо @JoshDavidMiller за очень сжатый ответ. Мне нужно было сделать это в ng-повторе и не мог понять, как это сделать. Использование логического в области видимости показывало элементы управления редактирования для всех элементов в списке, а не только того, над которым я витал. Я почти наклонился, чтобы вырвать angular.element (т.е. JQuery) и сам привязать обработчики hover, чтобы они могли вручную отображать только элементы управления для зависающего элемента. Я рад, что не опустился до таких злых путей.

<div ng-repeat="item in items" ng-mouseenter="item.showEdit = true" ng-mouseleave="item.showEdit = false">
    <span class="glyphicon glyphicon-edit" ng-show="item.showEdit"></span>
    Mouse over me.
</div>

Просто добавьте свойство к item, а не к $scope. В некоторых ситуациях я не мог добавить случайные ключи к элементам в моем списке, поэтому я сопоставил свой массив с новым, где item на самом деле является свойством объекта оболочки, тогда я мог бы прикрепить любые свойства, которые я хотел обертки, не загрязняя клавиши item.