依赖注入原理

 

 第三步:

 

 

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);

 

posted @ 2019-09-29 14:28  onyli  阅读(159)  评论(0)    收藏  举报