angularjs with fullpage.js锚点和路由(复杂)

时间:2016-01-11 05:09:00

标签: angularjs angularjs-routing fullpage.js anchor-scroll

我尝试在angular.page上将angularjs与fullpage.js结合起来。此外,仍有一些页面正常通过路线呈现。

这是我在app.js中的路线

app.config(['$routeProvider', '$httpProvider', '$locationProvider', function($routeProvider, $httpProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
  $routeProvider
    // Below are all sections at index page
    .when('/#index', {
      controller: 'WelcomeCtrl',
      templateUrl: 'views/welcome/index.html'
    })
    .when('/#products', {
    })
    .when('/#learn', {
    })
    .when('/#help', {
    })
    .when('/#contact', {
    })

    // Other pages not using fullpage.js
    .when('/cases', {
      controller: 'CasesCtrl',
      templateUrl: 'views/welcome/cases/index.html'
    })
    .when('/users', {
      controller: 'UsersCtrl',
      templateUrl: 'views/users/login.html'
    })
    .otherwise({
      redirectTo: '/'
    });
});

但是,当我滚动索引处的部分时,每个部分都调用我的第一个路径规则,然后渲染索引页面,但该部分已正确滚动到。

此外,当设置html5Mode为true时,带有哈希标记的路由规则似乎不起作用,我的网址变为http://xxx/%23products,如何解决此问题?

感谢。

1 个答案:

答案 0 :(得分:1)

好的,我通过一些黑客解决了它。

首先,我设置了标志' lockAnchors '要真实的'在fullpage.js。

其次,我将控制器设置为navbar指令,它提供 $ scope.scrollTo(锚点),然后点击并调用scrollTo(锚点)后,我使用 ngSilent 默默地更改网址。

最后,我查看单击导航栏的页面。 如果不是带有fullpage.js的索引页面,我使用 $ location.path(" /")返回索引,然后以静默方式将锚点添加到网址中,使用fullpage.js方法滚动到锚点(超时后约1200~1500)。