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

时间:2016-07-03 11:50:04

标签: angularjs

我一直在寻找教程和文件;但我不明白下面的代码。 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混合?

1 个答案:

答案 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,而是第一个文件中定义的模块的名称。