【发布时间】:2017-04-29 12:42:18
【问题描述】:
我刚开始学习 MEAN 堆栈并尝试从头开始构建身份验证页面(尽管我知道我可以使用开箱即用的身份验证但这样做是为了了解背景知识)但我发现了一点在我的导航栏上更新文本很棘手。
我的index.html 是这样的;
<nav class="navbar navbar-default navbar-fixed-top" ng-controller="HeadController">
<div class = "container-fluid">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">{{user.name}}</a></li>
</ul>
</div>
</nav>
<div class="container" ng-view></div>
我的app.js 看起来像这样;
var app = angular.module('app',['ngRoute'])
.service("userService", function () {
this.user = {};
this.getUser = function () {
return this.user;
};
this.setUser = function (user) {
this.user = user;
};
})
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/login', {
templateUrl: 'partials/login.html',
controller: 'LoginCtrl as login'
})
.when('/user/profile',{
templateUrl: 'partials/profile.html',
controller: 'ProfileCtrl as profile'
})
.otherwise({
redirectTo: '/login'
});
}]);
app.controller("HeadController", [
'$scope',
'userService',
function ($scope, userService) {
$scope.user = userService.getUser();
}]);
app.controller("LoginCtrl", [
"$location",
"userFactory",
"userService",
function ($location, userFactory, userService) {
var login = this;
login.user = {
username: '',
password: '',
isRemember: true
};
login.login = function () {
userFactory.login(login.user)
.success(function (user) {
userService.setUser(user);
$location.path("/user/profile");
})
.error(function (err) {
console.log(err);
});
};
}]);
最后,我的userFactory.js 看起来像这样;
function login(user) {
return $http({
url: '/api/login/',
method: "POST",
data: user,
headers: {
'Content-Type': 'application/json'
}
});
}
return{login:login};
每当我登录时,我都希望{{user.name}} 会更新,但这不会发生。我不知道该怎么做。我该怎么做才能做到这一点?
【问题讨论】:
-
鉴于您是开始新的..使用组件和基于组件的路由..它会更容易理解...
-
@entre 请您解释一下好吗?
标签: javascript html angularjs twitter-bootstrap mean-stack