我正在测试我的一个指令。它的基本结构是这样的
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()
...
但是,控制器未定义。是否可以访问指令的控制器?
答案 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 ()