gpt4 book ai didi

javascript - AngularJS:如何在不通过多个 $parent 导航的情况下访问最顶层的范围?

转载 作者:行者123 更新时间:2023-11-30 12:31:15 24 4
gpt4 key购买 nike

我知道有很多关于这个的问题,但我找不到我的答案。
我的弹出窗口有一个指令,它有很多模板,

HTML

<popup template="popupTemplate"></popup>

指令

app.directive('popup', function () {
return {
restrict: 'E',
scope: {
template: '='
},
link: function ($scope, $element, $attrs) {
// do something on $scope.template
}
}
});

现在在另一个元素上我为目标弹出窗口定义模板名称

<button popup-template="upload-avatar"></button>

指令

app.directive('popupTemplate', function () {
return {
link: function ($scope, $element, $attrs) {
$element.bind('click', function () {
$scope.$parent.popupTemplate = $attrs.popupTemplate;
$scope.$apply();
});
}
}
});

问题:
当我单击嵌套指令中的元素时。因为我需要处理:

$scope.$parent.popupTemplate
$scope.$parent.$parent.popupTemplate

这不是一个好主意。 我需要知道如何使用独特的语法而不是多个 $parent 访问第一个父作用域。

最佳答案

只需包装popupTemplate:

<popup template="whatever.popupTemplate"></popup>

然后你可以:

$scope.whatever.popupTemplate = $attrs.popupTemplate;

根本没有 $parent。

假设你有父作用域 A 和子作用域 B。默认情况下 B 复制 A 的所有值。这里的复制意味着复制指针。

在java中比较:

void bad(String s) {
s = "new";
}

void good(String[] s) {
s[0] = "new";
}

关于javascript - AngularJS:如何在不通过多个 $parent 导航的情况下访问最顶层的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638534/

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