0

我正在使用 ng-repeat 来构建一个无序列表。我这样做是这样的:

<li id="listItem{{$index}}" ng-repeat="slide in data" ng-click="setActive(slide.slideIndex,$event)">
    <span class="listItemText">
    <b>{{slide.slideIndex + 1}}. </b>{{slide.Title}}
  </span>
</li>

我给每个<li>人一个动态 IDlistItem0, listItem1, listItem2,....等。我需要在我的控制器中获取该元素。我一直在尝试使用angular.element(),但我无法让它终生使用。

我需要该元素的原因是因为在某些事件中,我需要我的动画库 (TweenLite) 自动滚动到该位置。您可以像这样将元素传递给 TweenLite:

$scope.setActive = function(id, event)
{
    $scope.currentIndex = id;
    if (event) player.currentTime = $scope.data[id].time;
    if ($scope.autoScroll)
    {
        var target = document.getElementById("listItem" + id);
        TweenLite.to(slideList,0.5,{scrollTo:{y:target}});
    }
}

问题target总是返回null。如果我将目标放在一个内部,angular.element()我会得到一个巨大的对象并且没有对实际对象的引用<li>(我能够找到)。

我在这里做错了什么和/或我应该以不同的方式来做这件事吗?谢谢。

编辑

player.addEventListener("timeupdate", function()
{
    currentTime = player.currentTime;
    angular.forEach($scope.data, function(value, key)
    {
        if (currentTime >= $scope.data[key].time && currentTime <= $scope.data[key].time + 0.3 && $scope.currentIndex != key)
        {
            $scope.$apply(function()
            {
                $scope.setActive(key);
            });     
        }
    });
});
4

1 回答 1

1

您传递的事件已经包含对该元素的引用。试试这个:

TweenLite.to(slideList,0.5,{scrollTo:{y:event.target}});
于 2013-03-13T18:27:38.640 回答