部分页面中的HREF与AngularJS路由($ rotueprovider)冲突



角版本:最新 -1.2

我将视图加载到ng-view基于$routeprovider中,我正在开发一个应用程序中间,所以现在我只是在浏览器中给出URL,并加载其相应的视图。

问题是我有部分页面中的链接,该链接应该滚动我到特定的div,并使用ng-repeat生成链接。

代码:

<li ng-repeat = "(key,val) in test.Questions">      
    <a href="#{{key}}" >{{ $index+1}}</a>        
</li>

因此,当我单击上述生成的链接时,将替换为链接。

eaxmple:

http://localhost:8085/Questionarie/#/exam/533135 

是加载视图的URL,但它像这样替换了:

http://localhost:8085/Questionarie/#QS7.....

相反,我想要这样的东西

http://localhost:8085/Questionarie/#/exam/533135#QS7

注意:我尝试使用 $anchorscroll,但是只有在我在 scrollTO('foo')...中给字符串字面的字符串,如果我像 scrollTo({{foo}})..一样,它不起作用

现在,我不使用任何后端,只是在Local主持的情况下开发UI。我在HTML5模式上看到了一些信息,但不明白如何使用。

我也打算使用NodeJS并在以后表达。

结论因此,问题是内页面与AngularJS路由相冲突,不仅是我上面提到的情况,而且在使用Twitter Bootstrap选项卡时也更换了URL。

不确定这是否适用于ngrouter,但我强烈建议您切换到支持嵌套视图的UI-Router,以命名一些好处之一。

步骤1:取消注册$ anchorsCroll服务。

angular.module('myapp', [...]).value('$anchorScroll', angular.noop)...

步骤2:$ ViewContentLoaded上的设置侦听器。

myapp.run(['$state', '$stateParams', '$window', function ($state, $stateParams, $window) {
  $rootScope.$on('$viewContentLoaded', function () {
    var state = $state.$current;
    if (state.scrollTo == undefined) {
      $window.scrollTo(0, 0);
    } else {
      var to = 0;
      if (state.scrollTo.id != undefined) {
        to = $(state.scrollTo.id).offset().top;
      }
      if ($($window).scrollTop() == to) {
        return;
      }
      if (state.scrollTo.animated) {
        $(document.body).animate({scrollTop:to});
      } else {
        $window.scrollTo(0, to);
      }
    }
  });
}]);

步骤3:设置您的状态

state('applications.details', {         
  ...
  scrollTo    : { id:'#applications-content-anchor', animated: true }
}).

由Github上的Gaelduplessix提供。

https://github.com/angular-ui/ui-router/issues/110

注意:我并未亲自对此进行测试,但是问题线程中的一般响应足以使我以自己的方式敲打 - 希望一切都可以解决。

祝你好运。

最新更新