2016-07-03 60 views
3

我一直在尋找教程和文檔;但我不明白下面的代碼。有2個來自2個文件的代碼;服務;和導入服務的文件。角度1.5方法。出口中的。angular.module

這是一個服務角文件的片碼(地址-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方法

  • 什麼是在出口使用'erp.services.addressLocal';當在導入中不使用時,只需要一個'import addressLocalService';什麼是完整的文檔語法?

  • /* @ngInject * /,是否有用?

在哪裏我可以找到關於.name或我可以在「導出」中使用的所有方法的完整文檔? ES6與Angular混合?

回答

8

讓我們來看看線路逐一:

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-註釋,它允許轉換上述代碼

['$http', function($http)] 

這個奇怪的符號是必要的,如果您壓縮代碼中使用,因爲minifier將改變$http的東西毫無意義,像a一樣短,角使用參數名稱來知道要注入什麼。

import addressLocalService from '../services/address-local'; 

這允許從精細的address-local.js,即模塊名稱中導入正在導出的內容。我不知道這行後的代碼是怎麼做的。但變量名稱命名錯誤,因爲addressLocalService不是addressLocalService,而是在第一個文件中定義的模塊的名稱。

+0

感謝JB你的很好的解釋......這將是你的正確路線的導入? – stackdave

+0

如果目標是獲取模塊的名稱,那麼您擁有的行是正確的。這是應該更好命名的變量(addressLocalService)。代碼如何處理這個變量? –

+0

它只是導入另一個表單組件來從api獲取記錄完整,我可以使用其他名稱。或者我可以如何使用'erp.services.addressLocal'默認名稱?方法.name真的很有用? – stackdave