Donc, je veux essentiellement pouvoir déclencher un événement, puis avoir une directive à compiler et à insérer son auto à une position dans le DOM. Actuellement, j'ai quelque chose comme ça
//controller
angular.module('app').controller('MainCtrl', function ($scope, $compile) {
$scope.$on('insertItem',function(ev,attrs){
var el = $compile( "<chart></chart>" )( $scope );
$scope.insertHere = el;
});
});
// directive
angular.module('app')
.directive('chart', function () {
return {
template: '<div>My chart</div>',
restrict: 'E',
link: function postLink(scope, element, attrs) {
element.text('this is a chart');
}
};
});
Je suis capable de voir l'objet "el" avec tout ce dont j'ai besoin mais je ne suis pas en mesure de l'insérer dans le DOM ... des indices?
Vous devez d'abord créer l'élément dom, puis le compiler et l'ajouter au document. Quelque chose comme ça:
$scope.$on('insertItem',function(ev,attrs){
var chart = angular.element(document.createElement('chart'));
var el = $compile( chart )( $scope );
//where do you want to place the new element?
angular.element(document.body).append(chart);
$scope.insertHere = el;
};
J'ai créé un exemple simple ici: http://plnkr.co/edit/n7SZpyeQ9nbjVSYA7ibB?p=preview