我目前正在开展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: '/'
});
}]);
答案 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';
},
答案 2 :(得分:1)
我能够按照Hadi的例子来解决这个问题:
.when('/catalog', {
templateUrl: function($location){
if($location.category == "specificProductType") {
return 'html/catalogSpecific.html';
} else {
return 'html/catalog.html';
}
},
controller: 'CatalogController'
})