2
this plunkの目的は、行をプログラムで選択して表をスクロールするために上下キーを使用する表を持つことです。選択した行の背景色が異なります。テーブル行をプログラムでスクロールする
キーアップ/ダウン時には、行を2回上下に移動させないようにe.preventDefault()
を使用します。問題は、スクロールダウンを開始したときに行が固定され、選択された行が消えることです。これを修正するには?
HTML
<div id="selector" tabindex="0" ng-keydown="scroll($event)"
style="width:300px;height:80px;border:1px solid gray;overflow-y:auto">
<table>
<tr ng-repeat="item in items">
<td class="td1" ng-class="{'tdactive' : $index==index }">{{item.col}}</td>
<td class="td1" ng-class="{'tdactive' : $index==index }">{{item.dsc}}</td>
</tr>
</table>
</div>
Javascriptを
var app = angular.module('app', []);
app.controller('ctl', function($scope) {
document.getElementById("selector").focus();
$scope.items = [ {col:"aaa", dsc:"AAA1"}, {col:"bbb", dsc:"BBB2"} , {col:"ccc", dsc:"CCC3"},
{col:"aaa2", dsc:"AAA21"}, {col:"bbb2", dsc:"BBB22"} , {col:"ccc2", dsc:"CCC23"},
{col:"aaa2", dsc:"AAA21"}, {col:"bbb2", dsc:"BBB22"} , {col:"ccc2", dsc:"CCC23"} ];
$scope.index = 0;
$scope.scroll = function(e) {
if (e.which === 40) { // down arrow
if ($scope.index<$scope.items.length - 1)
$scope.index++;
e.preventDefault();
}
else if (e.which === 38) { // up arrow
if ($scope.index>0)
$scope.index--;
e.preventDefault();
}
};
});
問題は、選択した行がテーブルの一番下にあり、キーを押したときに、次の行もテーブルの下部にあるはずです。私はテーブルの高さを変更しようとしましたが、どちらもうまくいきませんでした。 – ps0604
更新されたプランナーをチェックしてください。 – amansinghgusain
ありがとう、それは完璧に動作します – ps0604