我正在尝试为某些按钮设置动画,但我不明白,为什么隔离范围不起作用。这是一个小提琴:
Fiddle https://jsfiddle.net/gLhveeor/4/

mouseenter应该仅触发特定的动画,而不是所有ng-repeat项。

我希望你能帮助我。

最佳答案

这不是范围问题,您只是使用元素的HTMLCollection初始化TimelineLite对象,然后在所有元素上运行动画。而是在鼠标悬停时选择必要的元素,如下所示:

.controller('myCtrl', function ($timeout, $scope) {
    $timeout(function () {

        var tl = new TimelineLite();
        tl.stop();

        $scope.play = function ($event) {
            var target = $event.target.querySelector('.foo-2');
            tl.to(target, 0.4, {x: 30});
            tl.play();
        };
    }, 0);
});

在HTML中将事件对象传递到处理程序的位置:
<div my-directive class="foo" ng-mouseenter="play($event)">

演示: https://jsfiddle.net/gLhveeor/5/

但是我可以给您的建议是将此登录名移入指令中,将它们放在 Controller 中并不是最好的主意。

10-08 12:58