AngularJS:如何在不通过多个$parent导航的情况下访问最顶层的范围
AngularJS: how to access the topmost scope without navigating via multiple $parent?
我知道有很多问题,但我无法在其中找到答案。
我有一个关于我的弹出窗口的指令,其中包含许多模板,
.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 中的所有值。此处的复制表示响应指针。
在爪哇中比较:
void bad(String s) {
s = "new";
}
void good(String[] s) {
s[0] = "new";
}
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在不包含导航选项卡内容、页脚和头部的情况下打印 HTML/PHP 页面
- 在没有服务器端脚本的情况下跨多个页面链接导航栏
- 如何在特定情况下突出显示活动导航选项卡
- WebBrowser DocumentText 无法在不提供完整路径的情况下导航 javascript
- AngularJS:如何在不通过多个$parent导航的情况下访问最顶层的范围
- 在没有ui导航的情况下获取$stateParams
- 手风琴导航可以在没有框架的情况下使用吗
- 默认情况下,Twitter引导导航选项卡未加载
- 在仍然能够导航页面的情况下放大元素
- 画布外导航:如何在不覆盖正文的情况下,在一级菜单的顶部滑入二级菜单
- 如何在不刷新HTML的情况下导航到上一页
- 在没有AJAX的情况下,在悬停时加载导航中的图像
- 我可以在不导航的情况下更改地址栏中的文本吗?
- 如何在没有卸载事件的情况下导航页面
- 如何在不重新加载的情况下检测页面导航?
- 如何在不更改页面哈希的情况下使用javascript导航到页面中的元素
- 在没有服务器端脚本(PHP)的情况下,在所有页面上显示相同的内容(页眉、导航栏、边栏、页脚)
- 如何在没有ng-include的情况下为AngularJS模板添加导航侧边栏和页脚