Одно решение передало бы некоторое значение функции show_up()
и dont_show_up()
, которая идентифицирует изображение, скажем, 1, 2, а затем внутри функции изменила переменную overlay
на массив и обновила соответствующий пункт. ng-style="overlay"
также необходимо изменить на ng-style="overlays[0]"
- Правка
<div ng-mouseover="show_up(0)" ng-mouseleave="dont_show_up(0)" class="contain">
<img src="image/first_image.jpg">
<div class="overlay" ng-style="overlays[0]">
<a href="#!" class="text">show songs</a>
</div>
</div>
<div ng-mouseover="show_up(1)" ng-mouseleave="dont_show_up(1)" class="contain">
<img src="image/second_image.jpg">
<div class="overlay" ng-style="overlays[1]">
<a href="#!" class="text">show songs</a>
</div>
</div>
$scope.show_up = function (index) {
$scope.overlays[index] = {
"height":"100%"
};
};
$scope.dont_show_up = function (index) {
$scope.overlays[index] = {
"height":"0"
};
}
Хорошо, что становится трудно поддерживать, когда количество изображений увеличивается
Второе решение. Вы можете сохранить все изображения в виде массива объектов и применить директиву ng-repeat
к l oop через них.
<div ng-repeat="image in images" ng-mouseover="show_up(image.id)" ng-mouseleave="dont_show_up(image.id)" class="contain">
<img ng-src="image.src">
<div class="overlay" ng-style="image.overlay">
<a href="#!" class="text">show songs</a>
</div>
</div>
$scope.show_up = function (id) {
$scope.images.find(image => image.id === id).overlay = {
"height":"100%"
};
};
$scope.dont_show_up = function (id) {
$scope.images.find(image => image.id === id).overlay = {
"height":"0"
};
}