Я несколько секунд стучал головой о клавиатуру.AngularJs - Удалить все директивы на основе имени класса
У меня есть директива, которая динамически получает данные с сервера. Я скрываю раскрывающийся список show на основе последующего значения dropdownlist. Я хотел бы удалить все предыдущие выделения, когда я сделаю новый выбор. То, что я испытываю, состоит в том, что данные по-прежнему остаются от предыдущего выбора, даже после того, как я убираюсь.
Подпишите мой код: функция link (scope, element) { scope.displayChildren = displayChildren;
function displayChildren() {
var currentItem = scope.model;
scope.children = [];
var elementName = currentItem.name + '-child';
var elementResult = angular.element(document.querySelector('.' + elementName));
if (elementResult.length > 0) {
element.contents().remove();
elementResult.contents().remove();
element.append('<composed-components model="model"></composed-components>');
$compile(element.contents())(scope);
}
for (var i = 0, x = currentItem.children.length; i < x; i++) {
var currentChild = currentItem.children[i];
var array = currentChild.parentValue.split(',');
scope.children = getScopeChildren(array, currentChild);
}
if (scope.children.length < 1) return;
element.append('<composed-components class="{{child.parentName}}-child" ng-repeat="child in children track by child._id" model="child"></composed-components>');
$compile(element.contents())(scope);
}
function getScopeChildren(array, currentChild) {
if (scope.model.currentValue === null) {
return [];
}
if (array.length > 1) {
for (var i = 0, x = array.length; i < x; i++) {
scope.children = compare(scope.model.currentValue.value, array[i], scope.children, currentChild);
}
} else {
scope.children = compare(scope.model.currentValue.value, currentChild.parentValue, scope.children, currentChild);
}
return scope.children;
}
function compare(value1, value2, array, currentValue) {
if (value1 === value2) {
array.push(currentValue);
}
return array;
}
}
Любая помощь будет принята с благодарностью.
Благодарим за это. Причина, по которой он не удалялся, заключался в том, что класс в ng-repeat оставил позади грязный html. Я закончил обертку пользовательских директив внутри div с идентификатором. Кажется, что он правильно очищается. – Michael