如果我有这样的指令
JS:
app.controller('MyController', function($scope) {
this.someMethod = function() {
};
});
app.directive('myDirective', function() {
return {
scope: true
link: function(scope, elem, attrs, controller) {
controller.someMethod();
}
controller: 'MyController',
}
});
我想创建一个 Jasmine 间谍以确保调用链接函数controller.someMethod
,但这不起作用:
规格:
var elem = angular.element('<div my-directive></div>');
var scope = $rootScope.new();
$compile(elem)(scope);
var ctrl = elem.controller('myDirective');
spyOn(ctrl, 'someFunc').andCallThrough();
间谍创建得太晚了,因为控制器被实例化并且在$compile
语句中调用了链接函数。
还有什么其他方法可以监视链接功能中发生的事情?是否可以事先实例化控制器并将其传递给$compile
?