AngularJS は初めてです。私は Backbone.js から Angular に移行しようとしていますが、最初に非常に単純なフェードインとフェードアウトを行いたいと考えています。
したがって、私のHTMLは次のようになります。
<div id="calendar" style="padding-left: 50px" ng-controller="CalendarButtonController">
<!-- prev button -->
<div class="calendar-btn prev" ng-mouseover="fadeIn()" ng-mouseleave="fadeOut()" fade-duration="5000" fade-target="btnPrev">
<img id="btnPrev" src="img/btn-prev_hover.png">
</div>
<!-- next button -->
<div class="calendar-btn next" ng-mouseover="fadeIn()" ng-mouseleave="fadeOut()" fade-duration="5000" fade-target="btnNext">
<img id="btnNext" src="img/btn-next_hover.png">
</div>
</div>
したがって、アイデアは次のとおりです。マウスが前ボタンのdivの上にある場合、div内の画像がフェードインします。fade-target-Attributeには、フェードされる要素の特定のIDがあります。要素 (fade-target-Attribute で定義) をマウスオーバーするとフェードインし、マウスを離すと要素がフェードアウトします。だから私はコントローラーとディレクティブを実装しました:
function CalendarButtonController($scope){
$scope.fadeIn = function() {
$scope.$emit('event', 'fadeIn');
}
$scope.fadeOut = function() {
$scope.$emit('event', 'fadeOut');
}
}
angular.module('components', [])
.directive('fadeDuration', function ($rootScope) {
return {
restrict: 'A',
link: function(scope, el, attrs) {
$rootScope.$on('event', function(event, message) {
if(message == "fadeIn"){
fadeIn();
}
if(message == "fadeOut"){
fadeOut();
}
});
function fadeIn(){
$('#'+attrs.fadeTarget).fadeIn(attrs.fadeDuration);
}
function fadeOut(){
$('#'+attrs.fadeTarget).fadeOut(attrs.fadeDuration);
}
}
}
});
要素のフェードインとフェードアウトは機能しますが、問題は次のとおりです。マウスを prev-button-div の上に移動すると、両方の画像 (prev-Button と next-Button) がフェードインします。ただし、prev の画像のみフェードインする必要があります。 -ボタン。イベントが発生した要素の属性のみを取得するにはどうすればよいですか? ディレクティブには、ディレクティブに一致するすべての要素のすべての属性が常に含まれます。
編集:そして、フェードインとフェードアウト効果を実現する簡単な方法はありますか?