這裏的處理URL有和無標識的一種方式,使用標準routeProvider設置,用一個控制器:
JS:
var app = angular.module('plunker', []);
app.config(function($routeProvider){
return $routeProvider
.when('/', {
controller: 'HomeController',
templateUrl: 'home.html'
})
.when('/:id', {
controller: 'HomeController',
templateUrl: 'home.html'
})
.otherwise({ redirectTo: '/' });
});
app.controller('HomeController',
[
'$scope',
'$routeParams',
function($scope, $routeParams) {
if($routeParams.id){
$scope.id = $routeParams.id;
// handle scenario when there is an id in URL
return;
}
// handle scenario when there is no id
$scope.id = 'no ID!!';
}
]
);
Plunker
而這裏的另一種方式,不使用ng-view並依靠$ location服務:
var app = angular.module('plunker', []);
app.config(
['$locationProvider',
function($locationProvider) {
$locationProvider.html5Mode(true);
}
]
);
app.controller('HomeController',
[
'$scope',
'$location',
function($scope, $location) {
$scope.$watch(function(){
return $location.hash();
},
function(id){
$scope.id = id;
}
);
$scope.$watch('id', function(id){
if(id){
// handle scenario when there's id available
return;
}
// handle scenario when there is no id
});
}
]
);
Plunker
那第二個是完美的謝謝你。快速工作。我剛剛發現了Plunker ......很好! – mattl 2013-03-11 11:28:08
只需要弄清楚爲什麼我的模型現在不加載... grrr! – mattl 2013-03-11 11:28:26
第二種方法如何爲你們工作?在配置中,您將html5Mode指定爲true。但是在控制器的第一個$ watch表達式中,您正在檢查$ location.hash()。網址是否具有html5Mode true的哈希部分?試圖理解這一點。如果我錯了,請糾正我。我有類似的要求,這種方法不適合我。 – Kalyan 2017-01-11 12:32:11