This week I learned that there’s nothing quite like signing up to teach something to make you realize you don’t actually know the material all that well.
I’m giving an introduction to AngularJS talk this Thursday at Startup House SF. You should come by if that sounds like something you’d be interested in.
It’s Tuesday and 124 people have signed up and I’m kind of shvitzing right now. I’ve tried to channel my nervousness into preparation (we’ll see if it pays off or not). Here are a few things I’ve learned in the process.
The difference between $route and $routeProvider
This boils down to the difference between providers and services. Providers are blueprints that create injectable services for your app.
$route is the service that
$routeProvider gives you the chance to configure itself before it creates
$route if you do so in the
module.config block. The rules you configure on
$routeProvider in your config block become
The only place you can inject providers is into a
module.config block. You can’t inject any normal dependencies into
module.config because the injector hasn’t been built yet at that point.
The difference between a service, a factory, and a provider
Service: the actual function you give
module.service becomes the injectable service.
Factory: the object you return from the config function you supply becomes the injectable service.
From the below SO answer: “Providers have the advantage that they can be configured during the module configuration phase.” Just like
module.factory lets you write a wrapper configuration function around
module.service so that it can be dynamically configured at the time of injection,
module.provider allows you to write a wrapper function around
module.factory so that it can by dynamically configured at the time the app starts (using a
module.config block). You define
this.$get() on the configuration function, in which you define manually what automatically happens in the background when you use
This is summarized from this SO answer.
“If you don’t have a dot in your model, you’re doing it wrong”
I had understood the need to hand
ng-model a reference to a property on an object, not a primitive, but this sums it up nicely. Related SO page.
Accoriding to the docs, there isn’t much use for this outside of nested ng-repeats. However, for demo purposes, I think it might be useful.