这是我的app.js:
app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'partials/home.html',
controller: 'homeController',
resolve: {
loggedUser: getLoggedUser
}
}]);
函数getLoggedUser()返回一个在userService
找到登录用户时解析的promise。在我的index.html中,我包含了一个导航栏:
<ng-include src="'partials/navbar.html'" ng-controller="homeController"></ng-include> // Navbar
<div ng-view></div> // Angular views
问题是:
EDIT1:
我在myPromise.$$state.value
中返回homeController
并删除了resolve {...}
,尝试了一个丑陋的解决方案。但是,感觉我不应该使用像这样的$ q承诺。还有其他建议吗?
EDIT2: 我的意思是由于ng-controller =“”,loggedUser是未知的。以下是解释:AngularJS, resolve and unknown provider。
答案 0 :(得分:0)
我认为您收到有关未知提供商的错误的原因是&#39;是你需要将服务userService
注入解析函数:
app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'partials/home.html',
controller: 'homeController',
resolve: {
loggedUser: function(userService) {
return userService.getLoggedUser();
}
}
}]);
答案 1 :(得分:0)
您可以将导航栏与应用的其余部分分开。 使用像
这样的东西<body>
<div ng-controller = "navbarController as nav">
<div ng-show=" userIsLoggedIn"> <!-- show navbar only if true -->
<!-- navbar markup-->
</div>
</div>
<div ng-view> <!-- display other templates here --> </div>
</body>
然后,您可以使用service
来存储用户的登录状态和凭据。由于可以在应用范围内访问服务,因此您可以在navbarController
中访问其数据(例如用户名)。