2017-09-14 84 views
0

我有两个控制器和在我的角应用一个服务在3个不同的文件分裂如下:角具有控制器和服务在不同的文件

主控制器

var app = angular.module("app",[]); 

app.controller("mainController", function(){ 
    console.log("Hi main controller"); 
}) 

第二控制器

var app = angular.module("app"); 

app.controller("secondController", ['myCoolService', function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
}]); 

服务

var app = angular.module("app"); 

app.service('myCoolService', function() { 
}); 

我确信我正确地将其导入:

<script type="text/javascript" src="js/controllers/mainController.js"></script> 
<script type="text/javascript" src="js/services/myCoolService.js"></script> 
<script type="text/javascript" src="js/controllers/secondController.js"></script> 

但是我发现了一个未知服务异常:

Unknown provider: $resourceProvider <- $resource <- myCoolService 

有人能帮助我吗?

+0

可能是问题写在myCoolService.js – Rahul

+0

当你使用'angular.module(“APP”)'(注意没有'[]”的角度将检索模块,而不是创建一个新的)东西 – Manu

+0

邮政编码里面的乌尔服务..应该在服务js文件..可能是你还没有包括angular-resource.js文件 – Rahul

回答

3

应该是:

var app = angular.module("app"); 

app.controller("secondController", ['$rootScope', 'myCoolService', 
    function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
    } 
]); 

见,AngularJS喷油器无论是从一个阵列获取特定的相关的名字 - 或使用工厂函数参数他们。第一种方法实际上是推荐的,因为它可以承受缩小并让Angular跳过解析函数的参数列表。

问题是,AngularJS不会混合这些方法:如果指定了deps列表,那么它会被使用,并且参数给出的任何提示都会被忽略。这就是为什么您的原始代码实际上将myCoolService放入$ rootScope变量(第一个依赖项被分配给第一个参数),但是不知道在哪里找到第二个。

+0

不工作,在这里相同的结果。 – Manu

+0

那么myCoolService是如何定义的?请将其声明添加到问题中。 – raina77ow

+0

对不起,我的错,我的服务有错误。谢谢。 – Manu

0

在你的第二个控制器中,你缺少依赖关系。

var app = angular.module("app"); 

app.controller("secondController", ['$rootScope', 'myCoolService', function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
}]); 
相关问题