繁体   English   中英

angularjs:指令的访问控制器

[英]angularjs: access controller of directive

我正在对指令之一进行单元测试。 它的基本结构是这样的

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()
...

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

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

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 ()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM