ng-repeat 在只访问一个链接时突出​​显示所有链接

ng-repeat highlights all links when only one visited

代码如下:

<ul style="list-style: none;">
    <li ng-repeat="company in companies | orderBy:'name' | filter:companies_filter">
        <a href="#!/companies" ng-click="companySelected(company)">
            {{company.name}}
        </a>
    </li>
</ul>

代码可以正常工作,但是当我 select 只有一家公司时,列表中的所有公司都会突出显示,就像我访问过它们一样。我有没有添加到此代码中?

因为你所有公司的href都是一样的,如果你使用的是ui-router你可以在你的路由中添加一个参数,例如:

$stateProvider.state({
    name: 'companies',
    url: '/companies/:companyId'
});

你可以这样使用:

<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>

这样一来,每个公司都有自己的href,就不会出现这种情况了。 如果不清楚,请告诉我您使用的是哪个路由库。

每个 link 的 href 都是相同的。你需要在每一个的末尾附加一些东西来使它们独一无二。类似于:

<a href="#!/companies?id={{company.id}}" ng-click="companySelected(company)">

如果您的代码不对参数做任何事情也没关系。

确实你设置了相同的 href 但你应该使用 ng-style 而不是像这样的 ng-click :

<ul style="list-style: none;">
    <li ng-repeat="company in companies | orderBy:'name' | filter:companies_filter"  ng-class="{ active: isActive('#!/companies/'+company.id) }">
        <a href="#!/companies">
            {{company.name}}
        </a>
    </li>
</ul>

在你的 js 中

$scope.isActive = function (viewLocation) {
     return viewLocation === $location.path();
};