/ / angularjs: controlador de acceso de la directiva - javascript, prueba de unidad, angularjs, controlador

angularjs: controlador de acceso de la directiva - javascript, prueba de unidad, angularjs, controlador

Soy la unidad que prueba una de mis directivas. Su estructura básica es así

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

En mi prueba de unidad quiero probar la función "checkSomething", así que probé

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

Sin embargo, el controlador no está definido. ¿Es posible acceder al controlador de la directiva?

Respuestas

1 para la respuesta № 1

El pegamento es tu alcance para que puedas hacer.

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

pero creo que sería una buena práctica adjuntar cada función al alcance como

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

y luego su

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