Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于滚动的AngularJS路由_Javascript_Angularjs_Angularjs Routing - Fatal编程技术网

Javascript 基于滚动的AngularJS路由

Javascript 基于滚动的AngularJS路由,javascript,angularjs,angularjs-routing,Javascript,Angularjs,Angularjs Routing,我正在为一个项目使用Angular,我想知道是否可以使用Angular的路由功能(或第三方库的路由功能,如ui路由器)来控制上述场景中的导航 如果是这样的话,除此之外是否还可能有其他路由(例如,一个模态打开后显示为一个页面)?您可以将您的子片段拆分为具有不同状态的不同模板,然后使用ui router在状态之间进行转换。下面是一个执行示例 在路线配置中 app = angular.module('myApp', ['ui.router', 'ngAnimate']); app.config(['

我正在为一个项目使用Angular,我想知道是否可以使用Angular的路由功能(或第三方库的路由功能,如ui路由器)来控制上述场景中的导航


如果是这样的话,除此之外是否还可能有其他路由(例如,一个模态打开后显示为一个页面)?

您可以将您的子片段拆分为具有不同状态的不同模板,然后使用
ui router
在状态之间进行转换。下面是一个执行示例

在路线配置中

app = angular.module('myApp', ['ui.router', 'ngAnimate']);

app.config(['$stateProvider', function($stateProvider) {
  $stateProvider  

  .state('firstSubpage', {
    url: '/',
    template: '<div class="full-page">\
       <h2>Page One</h2>\
       <a ui-sref="secondSubpage">Next page</a>\
    </div>'
  })
  .state('secondSubpage', {
    url: '/page2',
    template: '<div class="full-page two">\
       <h2>Page Two</h2>\
       <a ui-sref="firstSubpage">Next page</a>\
    </div>'
  })

}]);
然后,您只需要在主模板中使用
ui视图
的元素


.

您是否尝试过使用$anchorscroll@flybear我见过它,但它似乎没有SEO友好的URL或历史API,我不确定如何使用itI实现问题的第二部分。我想你必须为此实现自定义路由。
/* set height explicitly on ui-view */
div[ui-view] {
  position: absolute;
  height: 100%;
  width: 100%;
}

[ui-view].ng-enter, [ui-view].ng-leave {
  position: absolute;
  left: 0;
  right: 0;
  -webkit-transition:all .5s ease-in-out;
    -moz-transition:all .5s ease-in-out;
    -o-transition:all .5s ease-in-out;
    transition:all .5s ease-in-out;
}

[ui-view].ng-enter {
  -webkit-transform:translate3d(0, 100%, 0);
  -moz-transform:translate3d(0, 100%, 0);
  transform:translate3d(0, 100%, 0);
}

[ui-view].ng-enter-active {
  -webkit-transform:translate3d(0, 0, 0);
  -moz-transform:translate3d(0, 0, 0);
  transform:translate3d(0, 0, 0);
}

[ui-view].ng-leave {
  /*padding-left: 0px;*/  
  -webkit-transform:translate3d(0, 0, 0);
  -moz-transform:translate3d(0, 0, 0);
  transform:translate3d(0, 0, 0);
}

[ui-view].ng-leave-active {
  /*padding-left: 100px;*/
  -webkit-transform:translate3d(0, -100%, 0);
  -moz-transform:translate3d(0, -100%, 0);
  transform:translate3d(0, -100%, 0);
}