依赖注入原理

第三步:

1.providerCache = {
$provide: {
provider: supportObject(provider),
factory: supportObject(factory),
service: supportObject(service),
value: supportObject(value),
constant: supportObject(constant),
decorator: decorator}},
2.function loadModules(modulesToLoad) {
assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array');
var runBlocks = [], moduleFn;
forEach(modulesToLoad, function(module) {
if (loadedModules.get(module)) return;
loadedModules.put(module, true);
2.1.function factory(name, factoryFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn});}
2.2.this.register = function(name, constructor) {
assertNotHasOwnProperty(name, 'controller');
if (isObject(name)) {
extend(controllers, name);
} else {
controllers[name] = constructor;}};
第五步:

1.function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope)

1.1.var controller = directive.controller;
if (controller == '@') {
controller = attrs[directive.name];
}
1.2.var controllerInstance = $controller(controller, locals, true, directive.controllerAs);
1.3.elementControllers[directive.name] = controllerInstance;
2.
// Initialize bindToController bindings
for (var name in elementControllers) {
var controllerDirective = controllerDirectives[name]; |||||| var controllerResult = controller(); ||||||
return instantiate = extend(function() {
var result = $injector.invoke(expression, instance, locals, constructor);


浙公网安备 33010602011771号