注入控制器给出空对象AngularJS

时间:2013-02-21 15:32:03

标签: angularjs

我有一个AngularJS应用程序,我正在尝试测试。问题是每当我尝试注入一个控制器时,它就会给我一个空对象。

beforeEach( inject(function($rootScope, $controller) {
   console.log($controller) // {}
   scope = $rootScope.$new();
   ctrl = $controller('MenuCtrl', {
     $scope: scope
   });
   console.log(ctrl) // {}
}));

我在JsFiddle中添加了一些我的设置样本和一些评论,我真的很感激帮助解决这个问题。

Fiddle

编辑 :我也试过这样做:

<击> beforeEach(angular.mock.module( '控制器'));

然后我得到:     错误:无模块:控制器

解决了这个问题:

beforeEach(angular.mock.module( '控制器'));

2 个答案:

答案 0 :(得分:2)

感谢Peter Bacon Darwin Angular mailing list 找到解决方案。我试图在控制器上调用changeView()。但是,它是具有此功能的范围而不是控制器。

再次感谢。

答案 1 :(得分:0)

根据您的代码,

var Controllers = angular.module('controllers', []);

您的测试配置

beforeEach(angular.mock.module('Controllers'));

应该是

beforeEach(angular.mock.module('controllers'));

小写'C',因为这是该模块的实际名称。您也可以使用myApp,因为它取决于controllers