2016-02-09 3 views
3

Я проверил много вопросов, но никто явно не дает примеры, в которых используются разные js-файлы. Я работаю над угловыми js, и я застрял в следующем выпуске. Проблема в том, что я хочу вызвать функции, которые находятся в другом js-файле и имеет разные модули. Теперь я Создать «Сервис», который обрабатывает оба модуля и обе функции, вот мой код,Обменивайтесь услугами между двумя различными модулями и двумя различными файлами js.

Первый модуль в first.js

var TaskAPP = angular.module('TaskApp', []); 
TaskAPP.factory("TestService", function() { 
    var users = ["ad", "bf", "tt"]; 
    return { 
     all: function() { 
      return users; 
     }, 
     first: function() { 
      return users[0]; 
     } 
    }; 
}); 

второй модуль в second.js

var LabAPP = angular.module('LabApp', ['TaskApp', 'TestService']); 
    LabAPP.controller("LabController", function ($scope, TestService) { 
     $scope.aa = TestService.first(); 
}); 

, но здесь, на этой странице возникает ошибка Ошибка: $ injector: modulerr Ошибка модуля Может ли кто-нибудь помочь?

ответ

1

Ваш TestService определен на TaskAPP, поэтому он не может использоваться в LabApp. Решение состоит в том, чтобы создать модуль только для служб, которые вы хотите использовать совместно с модулями.

Например, создать модуль только для хранения разделяемых услуг:

angular.module('SharedServices', []) 
.service('TestService', function(){ 
// code 
} 

Затем вводит SharedServices модуль в зависимости от того, модуля, который вы хотите получить доступ к службе от:

angular.module('TaskAPP', ['SharedServices']) 

Затем доступа к сервису вам хотите использовать SharedServices.TestService.fooMethod()

1

Ваша ошибка заключается в том, чтобы использовать имя службы TestService в качестве модуля зависимости су - эта линия:

var LabAPP = angular.module('LabApp', ['TaskApp', 'TestService']); 

Это терпит неудачу, потому что нет модуля называется TestService, есть только служба внутри модуля TaskApp с этим именем. Это должно работать:

var LabAPP = angular.module('LabApp', ['TaskApp']); 
    LabAPP.controller("LabController", function ($scope, TestService) { 
     $scope.aa = TestService.first(); 
}); 

Любовь из Швейцарии :)

Смежные вопросы