单击项目时,ng-repeat会刷新

时间:2017-05-23 18:27:29

标签: javascript angularjs

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

这个名单非常庞大。如果我向下滚动到底部并单击公司,列表将返回到顶部。当我输入公司名称进行过滤并点击时,也会发生同样的情况,再次回到初始视图。如何修复它以使其保持原样?

1 个答案:

答案 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');