内容加载中特定 div 的位置
Position on specific div on content load
我正在开发一个 Angularjs 前端和一个 Node.js 后端,我可以在其中接收所有数据。我得到一个 json 对象数组,代表几个这样的日期:
[
...
{date: "30/11"}, /* today */
{date: "1/12"},
{date: "2/12"},
{date: "3/12"},
...
]
我想像这样显示数组,但实际视图中的第一天应该是 "today" 并且能够滚动 left/right 以显示 older/newer 天。
+----------------------------+
| today 1/12 2/12 3/12 |
|+-----+ +----+ +----+ +----+|
|| | | | | | | ||
|| | | | | | | ||
|+-----+ +----+ +----+ +----+|
| |
| Scrollbar |
| <________________________> |
+----------------------------+
其实我是用ng-repeat从头开始显示数组的。我能够通过比较检测到 "today" 并向特定的 div 添加 class 但我不知道如何在 "today" div。你知道我该怎么做吗?
您可以使用 scrollIntoView()
.
这是一个示例。 scrollIntoView
应该在指令中。我把它放在控制器中只是为了展示它应该如何工作。
脚本
angular.module("app", []).controller("LineCtrl", function ($scope) {
var tds = []
for (var i = 0; i < 250; i++)
tds.push(i);
$scope.tds = tds;
setTimeout(function () {
document.getElementsByClassName('today')[0].scrollIntoView();
}, 1000)
});
HTML
<div ng-app="app">
<div ng-controller="LineCtrl">
<table>
<tr>
<td ng-repeat="td in tds" ng-class="{ 'today': $index === 50 }">{{ td }}</td>
</tr>
</table>
</div>
</div>
代码段
angular.module("app", []).controller("LineCtrl", function($scope) {
var tds = []
for (var i = 0; i < 250; i++)
tds.push(i);
$scope.tds = tds;
setTimeout(function() {
document.getElementsByClassName('today')[0].scrollIntoView();
}, 1000)
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="LineCtrl">
<table>
<tr>
<td ng-repeat="td in tds" ng-class="{ 'today': $index === 50 }">{{ td }}</td>
</tr>
</table>
</div>
</div>
我正在开发一个 Angularjs 前端和一个 Node.js 后端,我可以在其中接收所有数据。我得到一个 json 对象数组,代表几个这样的日期:
[
...
{date: "30/11"}, /* today */
{date: "1/12"},
{date: "2/12"},
{date: "3/12"},
...
]
我想像这样显示数组,但实际视图中的第一天应该是 "today" 并且能够滚动 left/right 以显示 older/newer 天。
+----------------------------+
| today 1/12 2/12 3/12 |
|+-----+ +----+ +----+ +----+|
|| | | | | | | ||
|| | | | | | | ||
|+-----+ +----+ +----+ +----+|
| |
| Scrollbar |
| <________________________> |
+----------------------------+
其实我是用ng-repeat从头开始显示数组的。我能够通过比较检测到 "today" 并向特定的 div 添加 class 但我不知道如何在 "today" div。你知道我该怎么做吗?
您可以使用 scrollIntoView()
.
这是一个示例。 scrollIntoView
应该在指令中。我把它放在控制器中只是为了展示它应该如何工作。
脚本
angular.module("app", []).controller("LineCtrl", function ($scope) {
var tds = []
for (var i = 0; i < 250; i++)
tds.push(i);
$scope.tds = tds;
setTimeout(function () {
document.getElementsByClassName('today')[0].scrollIntoView();
}, 1000)
});
HTML
<div ng-app="app">
<div ng-controller="LineCtrl">
<table>
<tr>
<td ng-repeat="td in tds" ng-class="{ 'today': $index === 50 }">{{ td }}</td>
</tr>
</table>
</div>
</div>
代码段
angular.module("app", []).controller("LineCtrl", function($scope) {
var tds = []
for (var i = 0; i < 250; i++)
tds.push(i);
$scope.tds = tds;
setTimeout(function() {
document.getElementsByClassName('today')[0].scrollIntoView();
}, 1000)
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="LineCtrl">
<table>
<tr>
<td ng-repeat="td in tds" ng-class="{ 'today': $index === 50 }">{{ td }}</td>
</tr>
</table>
</div>
</div>