我将此模块作为我的主应用程序使用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
那么,如何从我的控制器访问搜索?
答案 0 :(得分:1)
看起来问题是,您正试图将$scope
注入服务生成函数。
$scope
是一个仅适用于控制器的本地注入,这是有道理的,因为范围是定义控制器的上下文,对单例服务没有意义。
相反,如果需要,您可以将$rootScope
注入服务。
app.service('search', function($rootScope, $http){
// ...
});