gpt4 book ai didi

javascript - 如果从javascript中删除元素,如何在angularjs中手动销毁范围?

转载 作者:行者123 更新时间:2023-12-03 09:57:19 25 4
gpt4 key购买 nike

我正在将 Angular 模板插入元素。
考虑以下示例,

<p>
<c ng-controller="ctrl">
...
</c>
</p>


如果我从 javascript 中删除 c 。
会有什么副作用? (范围泄漏)
如何避免这种情况?

这个我用过

function render() {
var lastScope = angular.element('c').scope();

if(lastScope) {
lastScope.$destroy();
}

$('c').remove();

getTemplate(context + '/c.html', function(template) {
if (template) {
angular.element(document).injector().invoke(['$compile', '$rootScope', function($compile, $rootScope) {
$('p').append($compile(template)($rootScope));
$rootScope.$apply();
}]);
}
});
}


当我单击选项卡渲染功能时,每次都会被调用。
还有什么建议吗?

最佳答案

创建新范围并将其销毁,如下所示:

var newScope = $rootScope.$new(true);
$compile(template)(newScope);

//later
newScope.$destroy();

关于javascript - 如果从javascript中删除元素,如何在angularjs中手动销毁范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571507/

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