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);
});
}
});
});