The AngularJS Custom Directives Video Training Course Has Been Released!

  I’m excited to announce that my new AngularJS Custom Directives video training course has been released on! If you’ve been wanting to dive deeper into AngularJS directives and understand how they work while also clarifying terms such as isolate scope, transclusion, linking, and much more then this is the course for you. If you enjoyed my AngularJS JumpStart course or my AngularJS in 60ish Minutes video on YouTube then I guarantee you’ll love this course. The first 2 modules of the course are available to view absolutely free so that you can check it out. Here’s an additional […]

Adding Azure Active Directory and OWIN Code into an AngularJS/ASP.NET MVC Application to Handle User Authentication

In a previous post I discussed how to setup the necessary configuration code and assemblies in an AngularJS/ASP.NET MVC application in order to authenticate users against Azure Active Directory (AAD). Once the initial configuration is complete you can write code to redirect users to the AAD login screen to retrieve an ID token. In Part 4 of an article series I’m writing for I discuss the necessary code that’s required to authenticate a user and retrieve the ID token. Additional topics covered include hooking AAD into the ASP.NET MVC pipeline, creating an Entity Framework token cache, triggering authentication against […]

Adding Azure Active Directory Configuration Code and Assemblies into an AngularJS/ASP.NET MVC Application

In a previous post I discussed the process for registering an application with Azure Active Directory (AAD) so that users can be authenticated. AAD supports a wide range of features that can be used to perform authentication, authorization, and claims-based security tasks. Once an application has been registered with AAD you’ll need to add configuration code into the application’s web.config file, add related NuGet packages, and add custom C# code into the application in order to take advantage of AAD authentication functionality. In Part 3 of an article series I’m writing for I discuss these tasks and walk-through the […]

Creating Custom AngularJS Directives Part 6 – Using Controllers

Creating Custom AngularJS Directives Series Up to this point in the AngularJS directives series you’ve learned about many key aspects of directives but haven’t seen anything about how controllers fit into the picture. Although controllers are typically associated with routes and views, they can also be embedded in AngularJS directives. In fact, there are many scenarios where custom directives can take advantage of controllers to minimize code and simplify maintenance. While using controllers in directives is certainly optional, if you’d prefer to build directives using similar techniques that you use now to build views then you’ll find controllers are essential […]

Registering a Custom AngularJS Application with Azure Active Directory

If you’re working with Azure and need to add authentication and identity management into an application look no further than Azure Active Directory (AAD). AAD provides a robust set of services for single sign-on, authentication, multi-factor authentication, and more. Rather than setting up a custom authentication provider for an app, you can leverage existing functionality provided by AAD. To associate a custom application with AAD you first need to register it. If you’ve ever registered a custom app with Facebook, Twitter, or another service you’ll find the AAD app registration process to be quite similar. When you register your application, […]

Building Applications with AngularJS, Azure Active Directory, and Office 365/SharePoint

One of my favorite features of Single Page Applications (SPAs) is the ability to integrate data from nearly any backend technology and have it display on a variety devices (desktop browser, mobile, tablet, and more). Whether you’re calling a service like Firebase or Azure Mobile Services or hitting a custom REST API, the data that’s returned can be integrated into your SPA regardless of the language, technology, or operating system being used on the server. Some of the backend technologies I’ve been spending a lot of time with from a business perspective lately include Azure and the the Office 365/SharePoint […]

My Thoughts on AngularJS 1.3 and 2.0

I’ve received a ton of questions on Twitter and through email about the AngularJS 2.0 announcement. Questions such as “What’s going on with AngularJS?” and “Should I start a new AngularJS 1.3 project when AngularJS 2.0 looks quite different?”. Many people are excited about the modern approach the Angular team is taking with 2.0, a few seem to be predicting doom and gloom, and a few more are worried about what they should do.  As a result of all the questions I decided to put together a quick post since 140 characters on Twitter isn’t really enough. Stay on 1.3 […]

Cancelling Route Navigation in AngularJS

This post has been updated to cover AngularJS 1.3+. Routing provides a nice way to associate views with controllers in AngularJS using a minimal amount of code. While a user is normally able to navigate directly to a specific route, there may be times when a user triggers a route change before they’ve finalized an important action such as saving data.  In this type of situation you may want to cancel the route navigation and ask the user if they’d like to finish what they were doing so that their data isn’t lost. In another situation the user may try […]

What’s “Right” with AngularJS?

There’s been a lot of discussion today on some email groups I’m involved with about a post titled What’s wrong with Angular.js. I’d recommend reading through the post first before continuing but in a nutshell it makes it sound as if AngularJS isn’t a viable framework and should never be used. It also critiques two-way data binding which I found interesting (and misguided). It’s definitely a controversial post with some comments that made me laugh and others that I agreed with completely or in part. I normally ignore these types of posts but in this case I wanted to address […]