【发布时间】:2016-03-15 17:05:30
【问题描述】:
我正在阅读很多关于此问题的文章,例如 this、and this 和 also this,但这些文章中的每一篇都是从 NG1 服务是 class 并且可以导出的情况开始的。
我的情况非常不同,我经常在同一个文件中有多个服务,并且它们以非常古老的方式定义,例如
angular.module('App.services').factory('SessionService',
function() {
var defer = $q.defer();
[...]
}
);
没有class,没有export。
而且这个东西在页面中直接用老式的<script src="...">链接了
同时,我正在尝试在 Angular2 中创建新指令,而这些指令需要那些老式的服务。
我知道我应该能够写出这样的东西
import {Injector,Component, Directive, ElementRef, Input, View} from 'angular2/core';
var injector = Injector.resolveAndCreate([
SessionService
]);
var SessionService = injector.get(SessionService);
@Component({
selector: 'nav-bar'
})
@View({
templateUrl: '/app/components/navbar/navBar.html'
})
export class navBar {
constructor() {
}
}
当然SessionService 对象是找不到的。
我怎样才能摆脱这个烂摊子?
[附加信息]
使用babel 作为转译器
angular2-annotations 插件添加
了解angular2中Annotations和Decorators区别的好文章:http://blog.thoughtram.io/angular/2015/05/03/the-difference-between-annotations-and-decorators.html
【问题讨论】:
-
不要尝试导入脚本并手动注入,而是尝试将所有脚本按顺序包含在您的 index.html 中。然后你可以直接通过它的名字在你的控制器中导入一个服务......
标签: javascript angularjs dependency-injection angular babeljs