我一直在寻找教程和文件;但我不明白下面的代码。 2个文件中有2段代码;服务;以及导入服务的文件。
这是服务角度文件(address-local.js)的一部分代码:
export default angular.module('erp.services.addressLocal', [])
.factory('addressLocal', addressLocal)
.name;
/* @ngInject */
function addressLocal($http) {
这是一段文件代码,其中注入了服务(account.js):
import addressLocalService from '../services/address-local';
我的问题是:
导出中的.name方法是什么;我在网上看到的大多数例子都不使用.name方法
有什么意义用途' erp.services.addressLocal'在出口;如果没有使用导入,只需要导入地址本地服务&#39 ;;什么是完整的文档语法?
/ * @ngInject * /,是否有用?
我可以找到关于.name的完整文档或我可以在" export"中使用的所有方法。 ?它的ES6与Angular混合?
答案 0 :(得分:9)
让我们逐一检查这些行:
angular.module('erp.services.addressLocal', [])
这定义了一个名为'erp.services.addressLocal'
的新角度模块。这个名字可以是任何东西。模块只是组件(服务,控制器等)的存储库。返回的值是创建的角度模块。
.factory('addressLocal', addressLocal)
这会将名为'addressLocal'
的服务添加到角度模块中。由于工厂函数addressLocal
在之后定义,因此定义了服务。这将返回角度模块。
.name
这允许访问模块的名称。该值(即' erp.services.addressLocal')是由此文件中定义的ES6模块导出的值。
/* @ngInject */
function addressLocal($http) {
这是创建并返回addressLocal服务的工厂函数。它使用注入的$ http服务。 @ngInject由构建时使用的工具使用,名为ng-annotate,允许将上述代码转换为
['$http', function($http)]
如果你缩小你的代码,这个奇怪的符号是必要的,因为minifier会将$http
更改为无意义且更短的内容,如a
,而angular使用参数名来知道要注入的内容。
import addressLocalService from '../services/address-local';
这允许从精细地址-local.js导入正在导出的内容,即模块名称。我不知道这行之后的代码是什么。但变量名称命名错误,因为addressLocalService
不是addressLocalService,而是第一个文件中定义的模块的名称。