Write Modern Web Apps with the MEAN Stack: Mongo, Express, AngularJS, and Node.js (Develop and Design) by Dickey Jeff
Author:Dickey, Jeff [Dickey, Jeff]
Language: eng
Format: azw3
Publisher: Pearson Education
Published: 2014-09-24T04:00:00+00:00
FIGURE 8.4 Currently logged-in user
Go ahead and add update your nav bar in layouts/app.html:
Click here to view code image
<nav class='navbar navbar-default'>
<div class='container'>
<ul class='nav navbar-nav'>
<li><a href="/#/">Posts</a></li>
<li><a href="/#/register">Register</a></li>
<li><a href="/#/login">Login</a></li>
</ul>
<p ng-if='currentUser' class="navbar-text navbar-right">
Signed in as {{currentUser.username}}
</p>
</div>
</nav>
Now you can populate that currentUser object on $scope here. It isn’t as easy as going into LoginCtrl and setting $scope.currentUser = user, however. That’s because LoginCtrl isn’t scoped all the way out to this controller. You could use $rootScope (the global scope) instead, but there is a better way to do this without messing with global memory like that.
The better solution is to have the LoginCtrl bubble up a login event and have a parent ApplicationCtrl listen for that. ApplicationCtrl will then set $scope.currentUser, making it available to all children.
Update LoginCtrl in ng/login.ctrl.js to pass the event up using $emit:
Click here to view code image
angular.module('app')
.controller('LoginCtrl', function ($scope, UserSvc) {
$scope.login = function (username, password) {
UserSvc.login(username, password)
.then(function (response) {
$scope.$emit('login', response.data)
})
}
})
Now, put the ng-controller directive for the ApplicationCtrl on the <body> tag inside layouts/app.html:
Click here to view code image
<body ng-app='app' ng-controller='ApplicationCtrl'>
And create ng/application.ctrl.js:
Click here to view code image
angular.module('app')
.controller('ApplicationCtrl', function ($scope) {
$scope.$on('login', function (_, user) {
$scope.currentUser = user
})
})
Now you should finally be able to log in to your app! One more thing you need to do in order to finish up your authentication is to link the user to the post.
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Hello! Python by Anthony Briggs(9913)
The Mikado Method by Ola Ellnestam Daniel Brolund(9777)
Dependency Injection in .NET by Mark Seemann(9337)
Sass and Compass in Action by Wynn Netherland Nathan Weizenbaum Chris Eppstein Brandon Mathis(7778)
The Well-Grounded Java Developer by Benjamin J. Evans Martijn Verburg(7557)
Svelte with Test-Driven Development by Daniel Irvine(7135)
Test-Driven Development with PHP 8 by Rainier Sarabia(6862)
Layered Design for Ruby on Rails Applications by Dementyev Vladimir;(6728)
Secrets of the JavaScript Ninja by John Resig & Bear Bibeault(6532)
Secrets of the JavaScript Ninja by John Resig Bear Bibeault(6409)
Web Development with Django by Ben Shaw Saurabh Badhwar(6197)
React Application Architecture for Production by Alan Alickovic(5921)
Jquery UI in Action : Master the concepts Of Jquery UI: A Step By Step Approach by ANMOL GOYAL(5806)
Kotlin in Action by Dmitry Jemerov(5062)
Audition by Ryu Murakami(4583)
Software Architecture for Web Developers by Mihaela Roxana Ghidersa(4439)
Hands-On Full-Stack Web Development with GraphQL and React by Sebastian Grebe(4316)
Accelerating Server-Side Development with Fastify by Manuel Spigolon Maksim Sinik & Matteo Collina(4286)
Functional Programming in JavaScript by Mantyla Dan(4037)
