我知道有很多关于这个的问题,但我找不到我的答案。
我的弹出窗口有一个指令,它有很多模板,
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/