I ont directive infobulle inclus:question de la portée angulaire
<div class="wrapper" ng-repeat="item in items">
<span tooltip="item.description" tooltip-model="item.display" tooltip-border="item.color" tooltip-enable="!!item.description">
<span>{{$parent.item.label}} - {{$parent.item.display}}</span>
</span>
</div>
Le problème est que je dois utiliser $parent
si je veux faire référence à item
du modèle. Y at-il un moyen de le faire fonctionner sans $parent
? Mon code de directive ressemble à ceci (j'utilisais Angular UI bootsrap tooltip comme référence mais je ne sais pas pourquoi il utilise $ eval et $ observe s'il peut lier des attributs avec =
dans la portée, il utilise une portée isolée car il utilise true pour la propriété)
.directive('tooltip', ['$compile', function($compile) {
var template = '<div class="description-popup" ng-style="{borderColor: color}" ng-class="{top:!bottom,bottom:bottom}">' +
'<p>{{content}}</p>' +
'<span class="close icon-cancel-1"></span>' +
'<span class="arrow" ng-style="{borderColor: color}"></span>' +
'</div>';
return {
scope: {
color: '=tooltipBorder',
enable: '=tooltipEnable',
content: '=tooltip',
model: '=tooltipModel'
},
compile: function(element, attrs) {
var linkerFn = $compile(template);
return function link(scope, element, attrs) {
var tooltip = linkerFn(scope, function(){});
element.after(tooltip);
...
};
}
};
}]);
J'utilise angulaire 1.0.6 travail de portée si isolé de manière différente. Portée n'hérite pas du parent.
Vous pouvez passer l'objet élément complet dans la portée isolée et cela devrait fonctionner. – Chandermani