gpt4 book ai didi

javascript - 从指令中删除元素时,AngularJs 会自动销毁范围吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:05:41 29 4
gpt4 key购买 nike

假设我有指令:

angular.module('myApp').directive('myDirective', function ($compile) {
return {
link: function ($scope, $element, $attrs) {
var $randomElem = $('<div>');
$element.append($compile($randomElem)($scope));

$randomElem.remove();
}
}
});

作用域会自动销毁吗?如果没有,我该如何销毁它?

最佳答案

在您的情况下,您的 $randomElem 将与其父级(指令容器)具有相同的范围。所以它不会被破坏。

现在您要为此元素创建一个新范围:

// Case 1: child scope sharing the properties with parent
$element.append($compile($randomElem)($scope.$new()));

// case 2: child scope isolated, no sharing with parent
$element.append($compile($randomElem)($scope.$new(true)));

然后您需要在删除元素时手动销毁作用域。你可以使用 $scope.$destroy()

例如:

var newScope = $scope.$new();
$element.append($compile($randomElem)(newScope));


newScope.$destroy(); // or $randomElem.scope().$destroy();
$randomElem.remove();

关于javascript - 从指令中删除元素时,AngularJs 会自动销毁范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35322440/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com