Как использовать сервис в контроллере angular.js?

0

Я создал службу, но я не понимаю, как использовать эту службу в моем контроллере.

(function(){
    'use.strict';

    angular
     .module('app.core')
     .factory('shareBtwnCtrlr', shareBtwnCtrlrService);

    /** @ngInject */
    function shareBtwnCtrlrService() {
        shareBtwnCtrlr = function($scope, $rootScope){
            $scope.value = $rootScope.test;
        }
        return shareBtwnCtrlr;
    }
})();

В приведенном выше коде $ rootScope.test поступает с одного контроллера, и теперь я должен использовать этот $ scope.value в другом контроллере, используя эту службу. Другой контроллер, как показано ниже

(function (){
    'use strict';

    angular.module('app.product')
        .controller('ProductController', ProductController);

    /** @ngInject */
    //ProductController.$inject = ['$http', '$location', '$scope'];
    function ProductController($http, $location, $rootScope, $scope, $localStorage, $interval, $timeout,$mdDialog, $document, shareBtwnCtrlr){
        var vm = this;  
     }
})();
  • 0
    Почему бы не использовать $rootScope.test в другом контроллере?
  • 0
    вы используете строгий режим, и вы не объявили shareBtwnCtrlr используя var . Это может вызвать ошибку
Показать ещё 1 комментарий
Теги:

2 ответа

0

К контроллерам и директивам модуля можно вводить только сервис в одном модуле.

Новый модуль должен быть добавлен в приложение, чтобы расширить его возможности.

angular.module('app.core')
 .factory('shareBtwnCtrlrService', function() {
    var shareBtwnCtrlrService = this;

    shareBtwnCtrlrService.value = function(){
        //do something
    }

    return shareBtwnCtrlrService;
 }
};

 angular.module('app.product')
 .factory('productService', function() {
    var productService = this;

    productService.value = function(){
        //do something
    }

    return productService;
 }
};

Теперь, чтобы использовать сервис в модулях core и product, мы создаем модуль app включающий в себя как в нем

angular.module('app', ['app.product', 'app.core'])
 .controller('ProductController', ['shareBtwnCtrlrService', 'productService', function (shareBtwnCtrlrService, productService) {
     // ...do something
 }]);
0

У вас есть два модуля, поэтому инжекторы зависимостей не могут вводить ваш сервис из app.core в app.product. Попробуйте создать новый модуль

var app = angular.module('app', ['app.core','app.product']); 

а потом

angular.module('app').factory('shareBtwnCtrlr', shareBtwnCtrlrService);
  • 0
    Но в прошлый раз я использовал сервис fileUploader. Как я сделал инъекцию из app.core в модуль app.message, он работал хорошо.
  • 0
    Это услуга, заявленная в вашем модуле? Или просто другой модуль (сторонняя библиотека), который вы внедрили в свой модуль?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню