我知道这有很多问题,但我找不到他的答案 我的弹出窗口有一个指令,有很多模板,
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来访问第一个父作用域。
答案 0 :(得分:3)
只需打包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";
}