[英]How to destroy scope manually in angularjs if element is removed from javascript?
[英]Does AngularJs automatically destroy scope when an element is removed from a directive?
說我有指令:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.