2015-10-15 75 views
1

我正在嘗試使用ES6導入/導出語法創建和註冊新服務,但我不確定正確的格式是什麼。我使用它的唯一方法如下,如果我在注入AccountService時在我的index.module.js中使用了引號,它會中斷。我應該在我的服務文件中創建新的services.account-service模塊嗎?爲什麼服務只在我不使用引號時才被正確注入?謝謝!使用ES6語法註冊AngularJS服務

account.service.js:

class AccountService { 

    exportTrack(response, account) { 
     return { 
      method: 'PUT', 
      url: 'https://api.spotify.com/v1/me/tracks?ids=' +response.data.tracks.items[0].id+ '&type=track&market=US', 
      headers: { 
       'Authorization': 'Bearer ' + account.auth 
      } 
     }; 
    } 
} 

export default angular.module('services.account-service', []) 
    .service('AccountService', AccountService) 
    .name; 

index.module.js:

import { config } from './index.config'; 
import { routerConfig } from './index.route'; 
import { runBlock } from './index.run'; 

import HeaderController from '../app/components/header/header.controller'; 
import SidenavController from '../app/components/sidenav/sidenav.controller'; 
import LoginController from './login/login.controller'; 
import AccountController from './account/account.controller'; 
import AccountService from './account/accountService-service'; 
import TrackController from './track/track.controller'; 
import PlaylistController from './playlist/playlist.controller'; 
import { Velociraptor } from '../app/components/services/velociraptor-service'; // Component Loopback service (lb-ng) 

angular.module('velociraptor-ui',[ 
    'ngAnimate', 
    'ngCookies', 
    'ngTouch', 
    'ngSanitize', 
    'ngMessages', 
    'ngAria', 
    'ngResource', 
    'ui.router', 
    'ngMaterial', 
    'Velociraptor', 
    'toastr', 
    AccountService 
    ]) 
    .constant('moment', moment) 
    .config(config) 
    .config(routerConfig) 
    .run(runBlock) 
    .controller('HeaderController', HeaderController) 
    .controller('SidenavController', SidenavController) 
    .controller('LoginController', LoginController) 
    .controller('AccountController', AccountController) 
    .controller('TrackController', TrackController) 
    .controller('PlaylistController', PlaylistController); 

回答

1

我的猜測是, '注入帳戶服務時使用引號我index.module.js' 由你意味着你做這樣的事情:

angular.module('velociraptor-ui',[ 
    ... 
    'AccountService' 
    ]) 

而這種方式是行不通的。導入的名稱角模塊仍然是services.account-service(不管如何調用ES6模塊),並且AccountService變量等於'services.account-service'字符串。

我認爲出口name property模塊化Angular工作流程的一個可靠模式,只是介意究竟是導出/導入。

+0

這是有道理的,我想我只是不明白模塊的命名格式,以及究竟是怎麼回事:'export default angular.module('services.account-service',[]) .service( 'AccountService',AccountService) .name;' –