我正在尝试根据国家/地区显示唯一页面。我指的是耐克网站。 https://www.nike.com/sg/en_gb/。在这里,用户可以选择区域/国家:
如何使用Routing Param而不是路径来实现。我想使用Routing params或更好的解决方案(如果有的话)来实现。
查看
<body ng-controller="CountryController">
<form>
<select name="naver" id="naver" ng-model="route.selectedRoute" ng-change="RedirecttoCountry(route.selectedRoute)">
<option value="/" >Home</option>
<option value="/US">US</option>
<option value="/UK">UK</option>
<option value="/India">India</option>
</select>
</form>
<div ng-view=""></div>
我为每个国家/地区都有单独的htmls。
控制器
var app = angular.module("myApp", ['ngRoute']);
app.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl: "US.html",
controller: 'CountryController'
})
.when('/UK', {
templateUrl: "UK.html",
controller: 'CountryController'
})
.when('/India', {
templateUrl: "India.html",
controller: 'CountryController'
})
.otherwise({ redirectTo: '/' });
});
app.controller('CountryController', function($scope, $location){
$scope.RedirecttoCountry = function( path ){
$location.path(path);
}
});
答案 0 :(得分:2)
我希望您需要动态处理所有国家/地区的单一路线,因为您可以将templateUrl
用作:country
定义为参数的函数。
.when('/:country', {
templateUrl: function(params){
return (params.country || 'US')+'.html';
},
controller: 'CountryController'
})
答案 1 :(得分:1)
您的代码似乎运行正常。只需确保已包含所有依赖项并正确关闭所有HTML标记。
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider.when('/', {
templateUrl: "main.html",
controller: 'CountryController'
}).when('/:country', {
templateUrl: function(params) {
return (params.country) + '.html';
},
controller: 'CountryController'
}).otherwise({
redirectTo: '/'
});
});
app.controller('CountryController', function($scope, $location) {
$scope.RedirecttoCountry = function(path) {
$location.path(path);
}
});
使用params工作Plunker :https://plnkr.co/edit/hFLCyGgo91GwQhpagvAz?p=preview
答案 2 :(得分:1)
templateUrl
可以是参数的函数,例如:
$routeProvider
.when('/:country', {
templateUrl: function(params) {
return params.country + '.html';
}
})
.when('/', {
template: 'default'
})
.otherwise({ redirectTo: '/' });