2015-10-15 76 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;' –