这是html
:
<div class="main" ng-controller="companies">
<ul style="list-style: none;">
<li ng-repeat="company in companies | orderBy:'name' | filter:companies_filter">
<a href="#!/companies/{{company.id}}" ng-click="companySelected(company)">
{{company.name}}
</a>
</li>
</ul>
</div>
这是router.js
:
...
.when('/companies', {
templateUrl: '../html/companies.html',
controller: 'companies'
})
.when('/companies/:companyId', {
templateUrl: '../html/companies.html'
});
....
这是有效的:
$scope.companySelected = function(company) {
console.log(company);
}
这个名单非常庞大。如果我向下滚动到底部并单击公司,列表将返回到顶部。当我输入公司名称进行过滤并点击时,也会发生同样的情况,再次回到初始视图。如何修复它以使其保持原样?
答案 0 :(得分:0)
您正在寻找 $ anchorScroll 。
以下是文档:anchorScroll
从公司页面返回列表时,可能需要添加之前单击的元素的哈希ID。为此,您首先需要将ID添加到li元素,如下所示。
<li id={{company.id}} ng-repeat="company in companies | orderBy:'name' | filter:companies_filter">
<a href="#!/companies/{{company.id}}" ng-click="companySelected(company)">
{{company.name}}
</a>
</li>
回到列表页面时,调用$anchorScroll();
您可以在锚点滚动中将哈希作为参数发送,或者在调用$anchorScroll();
$location.hash('id_value');