Going back to Angularjs 1
Definitely not an expert when it comes to Angular. This is part of my 1 week learning experience and i hope i pick up as much angular, typescript as a i can.
In general, Angularjs1 works in 2 phases :-
b) Binding / Runtime
During the configuration phases, Angular has concepts like module, controller, services, providers and components (ui components)
Typically we worked with App -> Controller -> Services / Factory etc
Why use Factory and Value recipes?
Long, long time ago, we have factory and we have values recipes. These becomes the cornerstone for laying down other components in angularjs (again we are repeating ourselves - module, controller, services, providers and components (ui components)
Because Angular injects various dependencies.
Factory recipes allows :-
- Lazy initialization
- Leverage on other services from a module or modules
- Service initialization
Value recipes is something like a key value pair that gives key / value definition for data-binding in angularjs.
Example of value recipes are as follows :-
var myApp = angular.module('myApp', );
Provider = $get
Service instance are singleton in Angularjs
What the heck is angular directives. Good exmples would be html element types that you laid down on your html mark up like ngmodel, ngbind.
Also note that the following means the same thing, ng-model
Directive 'restrict' options that is available :-
Angular bootstrapping processes -> module loading, walking through the DOM and then
Only One Ng-App
You cannot have more than on ng-App in your application.
What happens when Angularjs bootstrap?
A simple example of Angularjs directive can be found here.
$compile is used when you trying to rebind (adding behaviour, events) or other dynamic content or template into an existing controller. In other words, say you created a static directive and then loads it in to DOM. If you wanna make any changes to its behaviour, you can't. This is where $compile comes in.
Take a look at the example here.
$observe - is for observing attribute. It only available from attribute level, $watch is available in the scope level. Only if there are changes in the attribute level, events associated with a watch gets fired away.
For a quick example, click here.
Watch is a method on Scope object.
$injector is used to load modules, instantiate types and invoke method.
Simple example can be shown using code here.