在此示例中,Angular js使用控制器

时间:2014-07-04 09:30:10

标签: angularjs

我正在阅读Angular JS documentation我正在看这个例子:

// testing controller
    describe('MyController', function() {
       var $httpBackend, $rootScope, createController;

       beforeEach(inject(function($injector) {
         // Set up the mock http service responses
         $httpBackend = $injector.get('$httpBackend');
         // backend definition common for all tests
         $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});

         // Get hold of a scope (i.e. the root scope)
         $rootScope = $injector.get('$rootScope');
         // The $controller service is used to create instances of controllers
         var $controller = $injector.get('$controller');

         createController = function() {
           return $controller('MyController', {'$scope' : $rootScope });
         };
       }));

我的问题是createController服务的目的是什么,我真的不明白它为什么存在或者返回$controller的最后一行是什么,或者它与$scope有什么关系1}}。

这是第二个灰色部分,其中包含标题下方的代码:使用模拟$ httpBackend进行单元测试

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

$controller从第一个灰色部分返回MyController的实例。为了给控制器一些上下文,它将$rootScope传递给控制器​​的实例化。因此,当您执行控制器时(如后续的it()块所示),控制器会运行并启动$http.get('/auth.py')请求。