使用Angular我有十几个类似于以下示例代码的路径设置。
是否有办法覆盖哪些模板和控制器根据其他一些标准加载,同时保持URL的顺畅?我的目标是在...时显示一个登录页面,让我们说$ scope.isLoggedIn = false。我不想将网址更改为/ login。
SomeApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/place', {
templateUrl: 'routes/place.html',
controller: 'PlaceCtrl'
})
.when('/test', {
templateUrl: 'routes/test.html',
controller: 'TestCtrl'
});
}]);
答案 0 :(得分:1)
ngRoute是一个非常简单的库,基本上只能将URL映射到控制器/视图。如果您想要更大的灵活性,请尝试ui-router,它能够根据状态进行路由。
答案 1 :(得分:1)
使用ngRoute并不是真的可行,但使用ui-router,您可以根据您想要的任何内容动态提供不同的模板。
$stateProvider.state('root',
url: '/'
controller: 'HomePageController'
templateProvider: [
'$rootScope'
'$templateCache'
'$http'
($rootScope, $templateCache, $http) ->
templateId = if $rootScope.isLoggedIn then "home-page-logged-in" else "home-page-not-logged-in"
templateId = "/templates/#{templateId}.html"
return $http.get(templateId, cache: $templateCache)
]
)
据我所知,你不能更改控制器,只能更改模板。哪种有点臭。