如果我有一个级别的路由,则哈希链接按预期工作,没有重新路由.但是我有一些url是country / kh,如果我尝试使用哈希标签,如country / kh#项目,页面重新路由,这是非常讨厌的.
所以,如果im在页面国家,并点击链接#developing,那么页面将滚动到#developing而不重新路由,这是所需的.如果我在页面国家/地区,我点击#projects,页面将重新路由,然后滚动到#projects;我不想要重新路由发生.
这个问题只发生在大自然page1 / parameter#anchor的链接上,而不是简单的pageA#anchor.
没有任何代码示例或堆栈空间,很难回答您的问题.我实施了一个密码(
http://plnkr.co/edit/oflB21?p=preview)来尝试重现这个问题,但是你可以看到我无法重现这个问题.即您可以轻松地在页面的两个不同部分之间来回浏览,例如#/ Country / Italy#Section-4和#/ Country / Italy#Section-1之间,没有任何页面加载或重新路由.请查看我的工作示例在以下的广告.这很可能是由于一个丢失的哈希爆炸或正斜杠或这样的细节而发生的.
主页的HTML代码段:
<ul> <li><a href="#/Country">Go to /Country</a></li> <li><a href="#/Country/US">Go to /Country/US</a></li> <li><a href="#/Country/Italy#Section-4">Go to /Country/Italy#Section-4</a></li> <li><a href="#/Country/Canada#Section-8">Go to /Country/Canada#Section-8</a></li> </ul>
<div id="Section-1" class="section pink"> Section 1 <div ng-if="country"> <a ng-href="#/Country/{{country}}#Section-8">Go to /Country/{{country}}#Section-8</a> </div> <div ng-if="!country"> <a ng-href="#/Country#Section-8">Go to /Country#Section-8</a> </div> </div>
所有JavaScript代码:
var app = angular.module("app",["ngRoute"]); app.config(["$routeProvider","$locationProvider",function ($routeProvider,$locationProvider) { $routeProvider .when("/",{ templateUrl: "./home-page.html",caseInsensitiveMatch: true,}) .when("/Home",}) .when("/Country",{ templateUrl: "./country-page.html",}) .when("/Country/:country",}) }]); countryController.$inject = ["$scope","$routeParams","$location","$anchorScroll"]; function countryController($scope,$routeParams,$location,$anchorScroll) { $scope.country = $routeParams.country; if (!!$location.$$hash) { $location.hash($location.$$hash); $anchorScroll(); } }