AngularJS在src上的动画图像发生了变化

pkd*_*dkk 10 angularjs angularjs-directive angularjs-scope

我有一个AnuglarJS应用程序,我从web服务加载/更改一些图像...

调节器

.controller('PlayerCtrl', function($scope, programService) {
    ....
    programService.refresh(function(data) {
        $scope.program = data;
    });
    ....
Run Code Online (Sandbox Code Playgroud)

模板

<img src="{{program.image}}" />
Run Code Online (Sandbox Code Playgroud)

当我的应用程序从Web服务更新时,图像会按预期更改,我只想在发生这种情况时制作淡出/淡出,如何才能完成?

当图像src改变时,是否可以始终进行淡出/淡出?

pkd*_*dkk 18

谢谢你的回复 -

我最终这样做了,它的确有效;)

---指令---

.directive('fadeIn', function($timeout){
    return {
        restrict: 'A',
        link: function($scope, $element, attrs){
            $element.addClass("ng-hide-remove");
            $element.on('load', function() {
                $element.addClass("ng-hide-add");
            });
        }
    };
})
Run Code Online (Sandbox Code Playgroud)

---模板---

<img ng-src="{{program.image}}" class="animate-show" fade-in />
Run Code Online (Sandbox Code Playgroud)

--- CSS ---

.animate-show.ng-hide-add, .animate-show.ng-hide-remove {
    transition: all linear 0.5s;
    display: block !important;
}

.animate-show.ng-hide-add.ng-hide-add-active, .animate-show.ng-hide-remove {
    opacity: 0;
}

.animate-show.ng-hide-add, .animate-show.ng-hide-remove.ng-hide-remove-active {
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

  • 你刚刚更新$ scope.program.image?我只是尝试做同样的事情,但第一个图像是淡入的,之后的图像 - 只是被切换(没有动画) (3认同)

Aid*_*des 11

更新1.5.x -使用Angular 1.5.x,您可以使用ngAnimateSwap来实现此效果.