In my JSFiddle I have this directive.
(function() {
angular.module('myApp', [])
.directive('appFoo', appFoo);
function appFoo() {
console.log('Directive Factory runs');
return {
controller: AppFooController,
link: link,
replace: true,
restrict: 'E',
scope: {
parentProp: '='
}
};
function AppFooController($scope) {
console.log('Controller runs');
$scope.render({
some: 'data'
});
}
function link($scope, $element) {
console.log('Link function runs');
$scope.render = function(data) {
console.log(shared.$scope.parentProp, $element[0], data);
};
}
}
}());
And this Jasmine Spec;
describe('myApp::appFoo', function() {
var shared;
beforeEach(function() {
shared = {};
shared.markup = '<app-foo parent-prop="someProp"></app-foo>';
inject(function($compile, $rootScope) {
shared.$compile = $compile;
shared.$parentScope = $rootScope.$new(true);
shared.$rootScope = $rootScope;
});
shared.createDirective = function() {
shared.$element = angular.element(shared.markup);
shared.$compile(shared.$element)(shared.$parentScope);
shared.$parentScope.$digest();
shared.el = shared.$element[0];
shared.$childScope = shared.$element.scope();
};
});
describe('when compiled', function() {
describe('when all parameters are provided', function() {
beforeEach(function() {
shared.$parentScope.someProp = {
a: 'a',
b: 'b'
};
shared.createDirective();
});
it('should have a render method', function() {
expect(typeof shared.$childScope.render).toEqual('function');
});
});
});
});
The job of the link function is to add a render method to the scope. It works in the application, but in Jasmine tests it never runs.
I've looked all over at various other questions listed below, but no luck.
Any help appreciated.
[1]
- AngularJS directive link function not working
- AngularJS directive link function not executing
- replace element in angularjs directive linking function
- scope.$watch in directive link function not getting called
- AngularJS directive link function not being called
- anglarjs directive link function not called from compilefunction
- Link function not called
- AngularJS Link function not called
- AngularJS directive link function not called in jasmine test
- Angular directive link function not called during pagination
- Angular directive's link function not being called
- AngularJS Link function not called due to attribute name normalization
- AngularJS: Why is my directive's link function not being called?