导出angular.module中的angular 1.5方法.name

sta*_*ave 7 angularjs

我一直在寻找教程和文件; 但我不明白下面的代码.2个文件中有2段代码; 服务; 和导入服务的文件.

这是服务角度文件(address-local.js)的一部分代码:

    export default angular.module('erp.services.addressLocal', [])
      .factory('addressLocal', addressLocal)
      .name;


    /* @ngInject */
    function addressLocal($http) {
Run Code Online (Sandbox Code Playgroud)

这是一段文件代码,其中注入了服务(account.js):

    import addressLocalService from '../services/address-local';
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 导出中的.name方法是什么; 我在网上看到的大多数例子都不使用.name方法

  • 什么是在导出中使用'erp.services.addressLocal'; 在导入时没有使用,只需一个'import addressLocalService'; 什么是完整的文档语法?

  • /*@ngInject*/,有用吗?

在哪里可以找到关于.name的完整文档或我可以在"导出"中使用的所有方法?它的ES6与Angular混合在一起?

JB *_*zet 11

让我们逐一检查这些行:

angular.module('erp.services.addressLocal', [])
Run Code Online (Sandbox Code Playgroud)

这定义了一个名为的新角度模块'erp.services.addressLocal'.这个名字可以是任何东西.模块只是组件(服务,控制器等)的存储库.返回的值是创建的角度模块.

.factory('addressLocal', addressLocal)
Run Code Online (Sandbox Code Playgroud)

这会添加一个名为'addressLocal'angular模块的服务.该服务由工厂功能addressLocal定义,紧接在之后定义.这将返回角度模块.

.name
Run Code Online (Sandbox Code Playgroud)

这允许访问模块的名称.该值(即'erp.services.addressLocal')是由此文件中定义的ES6模块导出的值.

/* @ngInject */
function addressLocal($http) {
Run Code Online (Sandbox Code Playgroud)

这是创建并返回addressLocal服务的工厂函数.它使用注入的$ http服务.@ngInject由构建时使用的工具使用,名为ng-annotate,允许将上述代码转换为

['$http', function($http)]
Run Code Online (Sandbox Code Playgroud)

如果你缩小你的代码,这个奇怪的符号是必要的,因为minifier会改变$http为无意义和更短的东西a,而angular使用参数名来知道要注入什么.

import addressLocalService from '../services/address-local';
Run Code Online (Sandbox Code Playgroud)

这允许从精细地址local.js导入正在导出的内容,即模块名称.我不知道这行之后的代码是什么.但变量名称命名错误,因为addressLocalService它不是addressLocalService,而是第一个文件中定义的模块的名称.