Я создавшая ниже угловые директивы, ChildDirective, который используется внутри ParentDirectiveИспользуйте угловую директиву внутри другой директивы
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);
}
}
Это работает нормально, и появились несколько дочерних директив.
Я хотел обновить ParentDirective, чтобы получить список childDirectives с сервера. Поэтому я обновил ParentDirective код, чтобы сделать вызов Ajax и затем нарисуйте 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);
});
}
}
}
});
Проблема заключается в том, что childDirectives не появляется больше, хотя в debeggur он входит в метод компиляции childDirective
Благодарим за помощь. Я попробовал, но, к сожалению, это не сработало. –
Я сделал небольшую коррекцию, думаю, что она должна работать var x = ** angular.element (** '<директива child> child-директива><директива child> child-directive>' **) **; – joakimbl
угловой.элемент(), решил проблему. и нет необходимости связывать его с областью. так что $ compile (x) достаточно. Coooool –