在使用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(”,[]),而这个是用来声明模块的,所以这种方法特别不可取,等我把中括号去掉之后,代码终于运行正常了。特地在这里写写,记录下来,希望有遇到相同问题的能够采纳,这个坑的确很深。。。。