angularjs:指令的访问控制器

时间:2013-12-16 09:11:45

标签: javascript unit-testing angularjs controller

我正在测试我的一个指令。它的基本结构是这样的

angular.module('MyApp')
.directive('barFoo', function () {
    return {
        restrict: 'E',
        scope: {},
        controller: function ($scope, $element) { 
              this.checkSomething = function() { .... }
        },
        link: function(scope, element) { .... }
    }
});

在我的单元测试中,我想测试功能' checkSomething',所以我试过

var element = $compile('<barFoo></barFoo>')(scope);
var controller = element.controller()
...

但是,控制器未定义。是否可以访问指令的控制器?

1 个答案:

答案 0 :(得分:1)

胶水是你的范围所以你可以做

controller: function ($scope, $element) { 
  this.checkSomething = function() { .... }
  $scope.controller = this;                
},

但我认为最佳做法是将每个功能都附加到范围内,如

controller: function ($scope, $element) { 
  $scope.checkSomething = function() { .... }
},

然后是

var element = $compile('<barFoo></barFoo>')(scope);
var checksomthingResult = scope.checkSomething ()