the best solution seems to use 'compile' in the directive:
directive.html:
<span id='pickerButtons'></span>
directive.js:
'compile': function(element, attributes) {
var pickerButtons = document.querySelector('#pickerButtons');
var span = document.createElement('span');
span.innerHTML = '';
for (var i=0, tot=pickerService.pickers.length; i < tot; i++) {
if(pickerService.pickers[i].type === 'button'){
span.innerHTML += '<span><span picker-' + pickerService.pickers[i].name + '></span></span>';
}
}
pickerButtons.appendChild(span);
var linkFunction = function($scope, element, attributes) {
$scope['pickFrom'] = function(pickerObject){pickerService.pickFrom(pickerObject);};
$scope['pickList'] = pickerService.getPickList();
};
return linkFunction;
}