簡體   English   中英

AngularJS,通過動態ID獲取元素?

[英]AngularJS, get element by dynamic id?

我正在使用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>一個動態ID,分別為listItem0, 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()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);
            });     
        }
    });
});

您傳遞的事件已經包含對該元素的引用。 嘗試這個:

TweenLite.to(slideList,0.5,{scrollTo:{y:event.target}});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM