您的位置:首页 > Web前端 > AngularJS

[$injector:unpr] Unknown provider:--angular.module()函数解答

2017-06-19 14:43 330 查看
在使用angularjs开发项目过程中,无疑遇到这个问题是最棘手的问题:

ionic.bundle.js:26799 Error: [$injector:unpr] Unknown provider: fifoServiceProvider <- fifoService <- FifoController http://errors.angularjs.org/1.5.3/$injector/unpr?p0=fifoServiceProvider%20%3C-%20fifoService%20%3C-%20FifoController at ionic.bundle.js:13443
at ionic.bundle.js:17793
at Object.getService [as get] (ionic.bundle.js:17946)
at ionic.bundle.js:17798
at getService (ionic.bundle.js:17946)
at injectionArgs (ionic.bundle.js:17970)
at Object.instantiate (ionic.bundle.js:18012)
at $controller (ionic.bundle.js:23417)
at Object.self.appendViewElement (ionic.bundle.js:59908)
at Object.render (ionic.bundle.js:57901)


遇到这个问题,一点提示都没有,找问题都无从下手,头疼不已。

在说解决办法之前,我们来看看angular.module函数:

angular.module('MyApp',[])


在一个SPA项目中,其实我们可以添加多个模块。然后模块的依赖就会写在那个中括号中来进行声明。

这种通过后号声明依赖的函数我们叫做模块声明。

angular.module('MyServices',['OtherService'])


他还有另一种用法,就是不加中括号这个参数:

angular.module('MyServices')


这个不加中括号的方法我们用来引用模块。所以,同一个模块,我们当然只需要声明一次就OK:

angular.module('MyApp',['MyControllers','MyServices','MyDirectives']);

angular.module('MyControllers',[]);
angular.module('MyServices',[]);
angular.momdule('MyDirectives'[]);


所以,angular.module(”,[])用来声明模块,相当于angular模块的setter函数。angular.module(),用来引用模块,我们就可以在模块上添加一些自己定义的东西来使用。

写到这里,我来说说我的问题,我确实遇到了上面的问题,unknown provider,所以检查了一下代码,基本上每个service里面都写成了angular.module(”,[]),而这个是用来声明模块的,所以这种方法特别不可取,等我把中括号去掉之后,代码终于运行正常了。特地在这里写写,记录下来,希望有遇到相同问题的能够采纳,这个坑的确很深。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angularjs