特定网址的角度路由

时间:2017-05-31 18:56:43

标签: javascript angularjs routes

我目前正在开展MEAN堆栈项目,并且正在尝试获取特定模板以显示在特定网址上。

目前,如果用户转到www.myurl / catalog,它会加载catalog.html模板,就像加载任何/ catalog?catagory = productType url一样。

我希望这样当用户转到/ catalog?category = specificProductType时,它会加载catalogSpecific.html模板。目前,catalog.html模板取代了catalogSpecific.html模板。我找不到这个具体问题,所以任何帮助都会受到赞赏。

目前我的路线如下:

应用/前/ app.js

angular.module('app', ['ngRoute',
                    'app.LandingModule.controller',
                    'app.CatalogModule.controller',
                    'app.ProductModule.controller',
                    'app.HeaderModule.directives',
                    'app.FooterModule.directives'
                    ])


.config(['$routeProvider', function($routeProvider) {
  $routeProvider
.when('/', {
  templateUrl: 'html/landing.html',
  controller: 'LandingController'
})
.when('/catalog', {
  templateUrl: 'html/catalog.html',
  controller: 'CatalogController'
})
.when('/catalog?category=specificProductType', {
  templateUrl: 'html/catalogSpecific.html',
  controller: 'CatalogController'
})
.otherwise({
  redirectTo: '/'
});
}]);

3 个答案:

答案 0 :(得分:2)

编辑:似乎我错误地认为默认路由器不可能。正如Hadi在评论中所描述的那样,您可以将“templateUrl”替换为在给定当前路径的情况下返回模板URL的函数。

据我所知,您无法通过内置角度路由器路由您想要的方式。

据我所知,您可以从这里选择两个选项:

1:学习使用ui-router库(在此处找到:https://github.com/angular-ui/ui-router

2:将所有路线从/ catolog发送到控制器/页面,手动查看您的路线参数并手动重新路由您。 (见https://docs.angularjs.org/api/ngRoute/service/ $ routeParams)

答案 1 :(得分:2)

尝试使用templateUrl这样的功能。我没有测试过。

  templateUrl: function($location){
     if($location.category)
         return 'html/catalogSpecific.html';
       else
          return  'html/catalog.html'; 
 },

Demo

答案 2 :(得分:1)

我能够按照Hadi的例子来解决这个问题:

    .when('/catalog', {
  templateUrl: function($location){
            if($location.category == "specificProductType") {
            return 'html/catalogSpecific.html';         
        } else {
            return 'html/catalog.html';
       }
},
  controller: 'CatalogController'
})