ho creato le direttive di seguito angolari, ChildDirective che viene utilizzato all'interno ParentDirectiveUtilizzare una direttiva angolare all'interno di un'altra direttiva
var wizardModule = angular.module('Wizard', []);
wizardModule.directive('childDirective', function ($http, $templateCache, $compile, $parse) {
return {
restrict: 'E',
scope: [],
compile: function (iElement, iAttrs, transclude) {
iElement.append('child directive<br />');
}
}
})
wizardModule.directive('parentDirective', function ($http, $compile) {
return {
restrict: 'E',
compile: function (element, attrs) {
var x = '<child-directive></child-directive><child-directive></child-directive>';
element.append(x);
}
}
Questo è stato a lavorare normalmente e diverse direttive bambino è apparso.
ho voluto aggiornare il ParentDirective, per ottenere l'elenco dei childDirectives dal server. Quindi ho aggiornato il codice ParentDirective fare una chiamata ajax e quindi disegnare le ChildDirectives
var elem;
wizardModule.directive('parentDirective', function ($http, $compile) {
return {
restrict: 'E',
compile: function (element, attrs) {
var controllerurl = attrs.controllerurl;
elem = element;
if (controllerurl) {
$http.get(controllerurl + '/GetWizardItems').
success(function (data, status, headers, config) {
var x = '<child-directive></child-directive><child-directive></child-directive>';
elem.append(x);
$compile(x);
});
}
}
}
});
Il problema è che le childDirectives non compare più, anche se nel debeggur sta entrando al metodo di compilazione del childDirective
Grazie per il vostro aiuto. L'ho provato, ma sfortunatamente non ha funzionato. –
Ho apportato una piccola correzione, penso che dovrebbe funzionare var x = ** angular.element (** ' direttiva-figlio> direttiva-figlio>' **) **; –
joakimbl
angular.element(), risolto il problema. e non è necessario collegarlo all'ambito. quindi $ compile (x) è sufficiente. Coooool –