为什么当服务注入第二个控制器时,AngularJS 1.4.8 应用程序不起作用
Why does AngularJS 1.4.8 app not work when service is injected into second controller?
一个 AngularJS 应用程序成功地将服务(称为 auth
(包含在一个控制器(称为secure
(中,然后允许secure
控制器处理的视图使用 auth.methodname()
语法与auth
服务进行交互。
该应用程序使用AngularJS的1.4.8版本,并且每次都使用$cookies.get('keyname')
语法正确编译,直到我尝试将auth
注入第二个控制器(称为navigation
(并从第二个(navigation
(控制器处理的视图中调用其方法之一。
该应用程序无法编译,FireFox开发人员工具控制台表示$cookies.get is not a valid method
。 然后在我将语法更改为$cookies['']
之后(尽管该应用程序仍然使用 AngularJS 的 1.4.8 版(,$cookies.get
错误消失了,并且出现了一个新错误,指出$interval is not a valid function
似乎阻止了编译。 所有编译错误都指向auth
模块,该模块的代码自错误出现之前就没有更改过。 我想知道问题是否在于将auth
服务注入navigation
控制器的方式。 需要对下面的代码进行哪些具体更改,以便navigation
控制器和secure
控制器都可以成功地重用auth
服务?
以下是auth
服务的相关部分,自新问题出现之前以来,它没有改变(除了将$cookies.get(''(更改为$cookies[''](:
angular
.module('auth', ['ngCookies'])
.service('auth', ['$rootScope', '$http', '$cookies', '$interval', function($rootScope, $http, $location, $cookies, $interval) {
var $this = this;
this.authenticated1 = $cookies['AUTH1'];
//// other stuff
$interval(function(){
//stuff
}
}
这是navigation
控制器,它可能错误地注入了auth
,因此可能导致问题:
angular
.module('navigation', ['auth', 'ngRoute'])
.controller('navigation', function($scope, auth, $route) {
$scope.auth = auth;
// other stuff
}
这是secure
控制器,它在更改之前工作正常,并且在错误出现之前没有更改:
angular
.module('secure', ['auth'])
.controller('secure', function($scope, auth, $routeParams) {
$scope.auth = auth;
// other stuff
}
控制器处理someview
的调用代码确实navigation
更改为包括对auth.logout()
的调用,作为问题出现之前更改的一部分。 这是someview
代码:
<div ng-controller="navigation" class="container">
<ul class="nav nav-pills" role="tablist" >
<li ng-class="{active:tab('home')}"><a href="/">Home</a></li>
<li ng-class="{active:tab()}"><a ng-href='auth.logout()' ng-click='auth.logout()' >logout</a></li>
</ul>
</div>
自问题出现之前,安全控制器处理someotherview
调用代码未更改,但未更改的代码为:
<div ng-show="auth.authenticated1!='yes'">
Show something in particular specified here.
</div>
这应该可以解决问题:
angular
.module('auth', ['ngCookies'])
.service('auth', ['$rootScope', '$http', '$location', '$cookies', '$interval', function($rootScope, $http, $location, $cookies, $interval) {
您错过了在函数参数中使用的$location
声明。如果使用数组表示法进行参数注入,则函数参数必须匹配。
- 我的AngularJS表达式没有'不起作用
- AngularJS指令部分应用的函数don'不起作用
- AngularJS ng include dons'不起作用
- AngularJs和Laravel的Pretty Urls不起作用
- Google Maps API OverlayView()在AngularJS指令中不起作用
- AngularJS ng include won'不知什么原因不起作用
- AngularJS没有'不起作用
- Grunt concat js angularjs 不起作用
- angularjs ng点击运行时标记不起作用
- AngularJS:$on dons'不起作用
- AngularJS-简单的教程不起作用
- 输入类型范围在angularjs重复内不起作用
- Reveal Modal中带有Foundation-Controller的AngularJS不起作用
- angularjs不起作用的Json响应
- 过滤器搜索与 AngularJs 不起作用
- 带有jquery自动完成的Angularjs不起作用
- 从php获取数据到angularjs不起作用
- 使用$httpBackend测试Jasmine/Karma的AngularJS不起作用
- $ statprovider angularJs不起作用
- 使用ngRoute使jquery tab使用angularjs不起作用