馬丁的回答是不錯,但我寧願ui-router module解決的問題:
- 創建三種狀態:
root
,dashboard
和landing
。
- 根據授權狀態,捕獲URL爲
root
狀態,並重定向到dashboard
或landing
。
dashboard
和landing
將有controller
和templateUrl
與其他應用程序狀態一起定義在一個地方,這很好。
代碼例如:
angular
.module("app", ["ui.router"])
.value("user", {
name: "Bob",
id: 1,
loggedIn: true
})
.config(function($stateProvider) {
$stateProvider
.state("root", {
url: "",
template: "<section ui-view></section>",
controller: function($state, user) {
if ($state.is("root")) $state.go(user.loggedIn ? "dashboard" : "landing");
}
})
.state("landing", {
templateUrl: "landing.html",
controller: "LandingCtrl"
})
.state("dashboard", {
templateUrl: "dashboard.html",
controller: "DashboardCtrl"
});
})
.controller("DashboardCtrl", function($scope, user, $state) {
$scope.logout = function() {
user.loggedIn = false;
$state.go("root");
}
})
.controller("LandingCtrl", function($scope, user, $state) {
$scope.login = function() {
user.loggedIn = true;
$state.go("root");
}
})
Complete example on Plunker。
這是非常酷和優雅的方式來做到這一點! :)正是我需要的。非常感謝! :) – 2014-09-06 05:07:51
爲Plunker鏈接+1! – orszaczky 2014-09-06 05:31:11
@ Klaster_1您將如何分離着陸和儀表板區域的資產? – 2014-09-06 05:44:26