我想我和许多其他人一样在使用 AngularJS 时遇到了类似的问题。我正在修复以前的错误消息(我无法从测试描述块中调用控制器函数)并得到新的错误。
错误:[ng:areq] 参数 'fooController' 不是函数,未定义
我已经阅读了其他帖子,但仍然无法纠正。
所以我的控制器就像..
'use strict'; var app = angular.module('MyApp', ['MyAppControllers']); var appControllers = angular.module('MyAppControllers', []); appControllers.controller('fooController', ['$scope', function ($scope) { function foo(param) { alert("foo called"); } }]);
我的控制器规格是..
'use strict'; describe('fooController', function () { var $scope, $controller; beforeEach(inject(function ($rootScope, $controller) { $scope = $rootScope.$new(); ctrl = $controller('fooController', { $scope: $scope }); })); it("should write foo called", function () { $scope.foo(); }); });
为什么它一直说 fooController 不是一个函数?
谢谢大家。
问问题
141 次
2 回答
0
出色地。我傻了。描述后我没有放。
所以我现在解决了这个问题:
'use strict';
describe('fooController', function () {
**beforeEach(module('MyApp'))**;
var $scope, ctrl;
beforeEach(inject(function ($rootScope, $controller) {
$scope = $rootScope.$new();
ctrl = $controller('fooController', { $scope: $scope });
}));
it("should write foo called", function () {
$scope.foo("aa");
});
});
和控制器..
'use strict';
var app = angular.module('MyApp', ['MyAppControllers']);
var appControllers = angular.module('MyAppControllers', []);
appControllers.controller('fooController', ['$scope', function ($scope) {
function foo(param) {
alert("foo called");
}
}]);
如果可以的话,我现在想问一下我原来的问题。
问题是从控制器规范的测试块中看不到函数 foo TypeError: undefined is not a function
我看到一个帖子说函数是私有的,应该把函数变成 l
$scope.foo = function(param){alert("foo");};
但是 'use strict' 禁止像上面那样转动功能。
我想知道其他人是如何解决这个问题的?
再次感谢你。
于 2014-09-16T07:21:25.207 回答
0
更改控制器
appControllers.controller('fooController', ['$scope', function ($scope) {
//add your function within scope
$scope.foo = function(){
alert("foo called");
}
}]);
于 2014-09-16T06:22:24.463 回答