Как я могу использовать внешнюю библиотеку JavaScript, импортированную как модуль ES6 в сервисе Angularjs? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть служба, которая требует внешней библиотеки, например moment. Я импортирую эту библиотеку как модуль ES6. Но поскольку служба AngularJS определена с использованием метода замыкания, библиотека недоступна при вызове funcA().

service.js

import moment from 'moment';
export function DataService() {
    return { 

        funcA: function() {
            return moment().startOf('day').fromNow(); 
        } 
    };
}

controller.js

MyCtrl.$inject = ['$scope', '$state', 'DataService', ...];
export function MyCtrl($scope, $state, DataService, ...) {

    function setInitialDate () {
      ctrl.someDate = DataService.funcA();
    }
}

app.js

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. Существует ли другой способ получить доступ к библиотеке, которая была импортирована как модуль ES6, из службы AngularJS?

1 Ответ

1 голос
/ 30 апреля 2019

Поместите фабрику и контроллер в один и тот же модуль:

import {DataService} from './service.js';
import {MyCtrl} from './controller.js';

angular.module('app',[])
.factory('DataService', DataService);
.controller('MyCtrl', MyCtrl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...