我有一项需要外部库的服务,例如moment
。我将该库导入为ES6模块。但是,由于使用闭包方法定义了AngularJS服务,因此在调用funcA()
时库不可用。
import moment from 'moment';
export function DataService() {
return {
funcA: function() {
return moment().startOf('day').fromNow();
}
};
}
MyCtrl.$inject = ['$scope', '$state', 'DataService', ...];
export function MyCtrl($scope, $state, DataService, ...) {
function setInitialDate () {
ctrl.someDate = DataService.funcA();
}
}
import {DataService} from './service.js';
import {MyCtrl} from './controller.js';
var services = angular.module('services', []);
services.factory('DataService', DataService);
angular.module('mycontrollers').controller('MyCtrl', MyCtrl);
我可以将外部库导入窗口对象,并使用$window
在服务内部访问它。是否有其他方法可以从AngularJS服务中访问作为ES6模块导入的库?
答案 0 :(得分:0)
将工厂和控制器放在同一模块中
import {DataService} from './service.js';
import {MyCtrl} from './controller.js';
angular.module('app',[])
.factory('DataService', DataService);
.controller('MyCtrl', MyCtrl);