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>

それぞれにetc<li>の動的 ID を与えています。 controller でその要素を取得する必要があります。私は使おうとしてきましたが、一生使えません。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()に入れると、巨大なオブジェクトが得られ、実際のオブジェクトへの参照はありません<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 に答える