私は、フォームを送信し、サーバーから結果を取得し、その後に HTML テーブル ビューを取得するアプリに取り組んでいます。私の入力フォームは少し大きく、画面全体をカバーしています。テーブルが表示されたら、テーブル ビューで自動的に下にスクロールします。angularJs の $anchorScroll を使用しました。しかし、私が望む結果を達成することはできません。また、$timeout を使用して、テーブルが既に存在するかどうかを確認してから $anchorScroll を実行しましたが、まだ成功していません。(このソリューションに基づく: $location と $anchorScroll を使用して、テーブルの行をビューにスクロールします。
私のコードを聞いてください。
HTML
<div data-ng-controller="searchController as searchCtrl" id="scrollArea">
<form>
//HTML input elements
<div class="buttons">
<md-button class="md-primary md-raised" ng-click="searchCtrl.gotoTable('resultTable')">Start</md-button>
</div>
</form>
</div>
<!-- Smart Table for displaying result -->
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0" id="resultTable">
//table content
</div>
コントローラ
angular.module('myApp')
.controller("searchController", function($log, searchService, $scope, $location, $anchorScroll, $timeout){
var self = this;
self.gotoTable = function(resultTable)
{
$timeout(function() {
$location.hash(resultTable);
$anchorScroll();
});
};
});
なぜ機能しないのかわかりませんか?
CSS で id scrollArea と resultTable を定義する必要がありますか?
どんな助けでも大歓迎です。前もって感謝します。
アップデート
Okazari のソリューションに基づいて、HTML の一番下に br タグがたくさんある別の div を配置しようとしました。ページを更新すると、[開始] をクリックしなくても、その div タグまで自動的にスクロールされます。これは少し奇妙です。もカバーしてみました
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0" id="resultTable">
id = "resultTable" の別の div タグを持つタグ。しかし、それでもうまくいきませんでした。