AngularJs-$Injector 对象?
AngularJs-$Injector an Object?
我一直在努力理解 angular 的核心。 angular 编译后,我无法理解事物的结构方式。我知道 Angular 服务、工厂、供应商等的注入器 contains/keeps 轨迹——几乎所有来自 $provider 服务的方法。我知道注入器随后会获取该值,并且在引用时会获取调用 provide 方法的实例时获得的单个值,因为 $get 方法仅检索方法值的单个实例——这就是为什么它们是单例对象(我写的有点重复,但我想说清楚)。我有几个问题是是否有全局注入器或每个模块是否有自己的注入器? Injector 是一个对象吗?这就是我想象的样子
var angular = {
injector: [fn],
bootstrap: [fn],
$provider: {
factory:[fn],
service: [fn],
constant: [fn]
}
modules: {
$injector: {
//Names of All Factories/Services/Etc.
},
myApp: {
dependencies:[modules.myServices, modules.controllers, modules.filters]
},
myServices: {
dependencies: [],
controllers: {
myTestCtrl: {
//All controller logic
}
}
},
controllers: {
//list of controllers and logic
},
filers: {
//list of filers and logic.
}
}
}
创建此代码段的想法是我有一个用于过滤器、控制器和服务的模块。我通常以这种方式构建事物,因为控制器和服务脚本可能会变得很长(是的,我知道你可以做 "var app =" 和参考应用程序,请不要浪费答案。myService 有一个控制器 属性证明它是一个有控制器能力的模块,仅此而已。如果你真的不知道,不要为了答案而猜测,请只在你 100% 的情况下给我答案你肯定知道你在说什么。
元素的 angular.bootstrap(rootElement, moduleArray, config) method constructs an $injector object and a $rootScope object and stores references to them as properties of the jqLite 数据对象。
可以通过以下方式查看此对象:
console.log(angular.element(rootElement).data());
使用'ng'模块的典型应用程序结构如下:
rootElement.data()
- $scope (rootScope)
- $injector
- $providerProvider (provider cache)
- $controllerProvider (controller cache)
- $compileProvider (directive cache)
- $filterProvider (filter cache)
- $cacheProvider (template cache)
- $qProvider (promise library)
- $httpProvider (XHR library)
缓存是各自提供者的私有变量,由各自的函数方法检索。
我一直在努力理解 angular 的核心。 angular 编译后,我无法理解事物的结构方式。我知道 Angular 服务、工厂、供应商等的注入器 contains/keeps 轨迹——几乎所有来自 $provider 服务的方法。我知道注入器随后会获取该值,并且在引用时会获取调用 provide 方法的实例时获得的单个值,因为 $get 方法仅检索方法值的单个实例——这就是为什么它们是单例对象(我写的有点重复,但我想说清楚)。我有几个问题是是否有全局注入器或每个模块是否有自己的注入器? Injector 是一个对象吗?这就是我想象的样子
var angular = {
injector: [fn],
bootstrap: [fn],
$provider: {
factory:[fn],
service: [fn],
constant: [fn]
}
modules: {
$injector: {
//Names of All Factories/Services/Etc.
},
myApp: {
dependencies:[modules.myServices, modules.controllers, modules.filters]
},
myServices: {
dependencies: [],
controllers: {
myTestCtrl: {
//All controller logic
}
}
},
controllers: {
//list of controllers and logic
},
filers: {
//list of filers and logic.
}
}
}
创建此代码段的想法是我有一个用于过滤器、控制器和服务的模块。我通常以这种方式构建事物,因为控制器和服务脚本可能会变得很长(是的,我知道你可以做 "var app =" 和参考应用程序,请不要浪费答案。myService 有一个控制器 属性证明它是一个有控制器能力的模块,仅此而已。如果你真的不知道,不要为了答案而猜测,请只在你 100% 的情况下给我答案你肯定知道你在说什么。
元素的 angular.bootstrap(rootElement, moduleArray, config) method constructs an $injector object and a $rootScope object and stores references to them as properties of the jqLite 数据对象。
可以通过以下方式查看此对象:
console.log(angular.element(rootElement).data());
使用'ng'模块的典型应用程序结构如下:
rootElement.data()
- $scope (rootScope)
- $injector
- $providerProvider (provider cache)
- $controllerProvider (controller cache)
- $compileProvider (directive cache)
- $filterProvider (filter cache)
- $cacheProvider (template cache)
- $qProvider (promise library)
- $httpProvider (XHR library)
缓存是各自提供者的私有变量,由各自的函数方法检索。