gpt4 book ai didi

javascript - Angularjs 范围的父 ID

转载 作者:行者123 更新时间:2023-11-28 00:57:33 24 4
gpt4 key购买 nike

我想访问或操作作用域的父级的父级,但又不想变得太复杂。作为一种时尚, Controller 允许将父 Controller 命名为: this.applicationCtrl.something给定 applicationCtrl > Parent1Ctrl > child1Ctrl -siblingOfChild1Ctrl

为了给你一个更好的例子,我在 <body> 上有一个 applicationCtrl标签,我的侧面板带有 sidePanelCtrl以及 contentCtrl 的内容带有嵌套 contentChildCtrl

使用 Controller 作为模型,我可以调用或更改 sidePanelCtrl 上的内容通过调用 this.sidePanelCtrl ,如果我只想使用$scope,我可以这样做吗?方法?

这是专门针对contentChildCtrl的我不想写$scope.$parent.$parent的地方这仍然只能让我到达 applicationCtrl而不是 sidePanelCtrl

最佳答案

如果您不知道父作用域的嵌套级别,或者不想输入 $scope.$parent.$parent等等,你可以将这样的东西附加到服务中:

angular.module('app').service('inherit', function () {
var inherit = function(scope, item)
if (!scope) return;
if (scope[item]) return scope[item];
return inherit(scope.$parent, item);
}
return inherit;
}

如果您的命名空间不是很好,那么它可能没有多大帮助,但是如果您想要修改(例如)孙级范围中的侧边栏内容,您可以调用 var sidebarNav = inherit($scope, 'sidebarNav');在孙子 Controller 中。

编辑 - 最好将其放入服务中而不是 $rootScope正如下面的评论提到的

编辑:更新为使用服务

关于javascript - Angularjs 范围的父 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26066124/

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