2015-09-01 1 views
0

У меня есть этот модуль в качестве моего основного приложения, которое использует api:модули доступа ребенка модули службы от главного контроллера

var app = angular.module('app.main', ['api']); 

app.controller('Home', function($scope, api, search){ 
    $scope.search = function(){ 
     api.search.lookup($scope.domain); 
     search.lookup($scope.domain); 
    }; 
}); 

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

var app = angular.module('api', [ 
    'api.search' 
    // other modules here 
]); 

app.service('api', function($cookies, $http, $rootScope, search){ 
    // Some more code 
}); 

Поиск по поиску module выглядит следующим образом:

var app = angular.module('api.search', []); 

app.service('search', function($scope, $http){ 
    this.lookup = function(domain){ 
     // query 
    }; 
}); 

Когда я запускаю мой контроллер и впрыснуть api, я не могу получить доступ к search, потому что я получаю TypeError: Cannot read property 'lookup' of undefined, и если я впрыснуть search вместо этого, я получаю эту ошибку:

Error: [$injector:unpr] http://errors.angularjs.org/1.4.3/$injector/unpr?p0=<div ng-view="" class="ng-scope" data-ng-animate="1">copeProvider%20%3C-%20%24scope%20%3C-%search 

Итак, как я могу получить доступ к поиску моего контроллера ?

ответ

1

Проблема, по-видимому, заключается в том, что вы пытаетесь ввести $scope в функцию генерации службы.

$scope - это локальная инъекция, доступная только для контроллеров, что имеет смысл, поскольку область контекста соответствует тому, где определен контроллер, и он не имеет никакого значения для услуг singleton.

Вместо этого вы можете ввести $rootScope в сервис, если это необходимо.

app.service('search', function($rootScope, $http){ 
    // ... 
}); 
+0

К сожалению, извините, у меня есть 'api' определено, я просто забыл его в код –

+0

@GetOffMyLawn, хорошо, я удалил ссылку на' api' в качестве второй проблемы –

+0

@GetOffMyLawn, то еще что-то потому что это работает для меня: http://plnkr.co/edit/WZUiHpLgI2MQeVfCU9JY?p=preview –

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