我想我和其他许多人一样,在AngularJS上也有类似的问题。我修复了之前的错误消息(无法从测试描述块中调用控制器函数),并得到了新的错误。 错误: ng:areq参数'fooController‘不是函数,得到了未定义的 我已经看过其他文章了,但还是不能改正。 所以我的控制器就像..。 ‘使用严格’;var应用= angular.module('MyApp','MyAppControllers');var appControllers =angular.module(‘MyAppController,[]);appControllers.controller('fooController','$scope',函数($scope) { function (Param){警告(“foo调用”);}}; 我的控制器规格是..。 ‘使用严格’;描述(‘fooController’,函数() { var $scope,$controller;beforeEach(函数($rootScope,$controller) { $scope = $rootScope.$new ();ctrl = $controller('fooController',{ $scope:$scope });});它(“应该写foo调用”,函数(){ $scope.foo();});}; 为什么总是说fooController不是函数?? 谢谢大家。
旧邮报编辑。请您阅读下面的文章(我的新问题?:)
发布于 2014-09-16 06:22:24
变更控制器
appControllers.controller('fooController', ['$scope', function ($scope) {
//add your function within scope
$scope.foo = function(){
alert("foo called");
}
}]);发布于 2014-09-16 07:21:25
井。我当时很傻。我没有在描述之后放进去。
所以我现在用以下方法解决这个问题:
'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不能从controllerSpec的测试块TypeError中看到:未定义不是函数
我看到一个帖子说函数是私有的,应该把函数转换成l。
$scope.foo = function(param){alert("foo");};但是“严格使用”禁止像上面那样的转动功能。
我想知道其他人对这个问题做了什么?
再次感谢您。
https://stackoverflow.com/questions/25861805
复制相似问题