AngularJS:如何访问Parent's Javascript文件中的命名控制器,反之亦然

AngularJS : How to access Parent's Named Controller inside Javascript files and vice versa?

本文关键字:文件 Javascript 反之亦然 控制器 何访问 访问 Parent AngularJS      更新时间:2023-09-26

我最近一直在使用命名控制器,它比使用传统的$scope变量更好。在DOM中,访问父控制器的属性和函数变得非常容易。下面给出了一个例子。

<div ng-controller="parentCtrl as parent">
    <div ng-controller="childCtrl as child">
        Parent age is {{ parent.age }}
        Child age is {{ child.age }}
    </div>
</div>

我想知道如何在angular的javascript文件中使用相同名称的控制器。有点像下面提到的。

angular.controller('childCtrl',function(...) {
    var vm = this;
    this.age = 24;
    console.log(parent.age);
});

我知道在使用它之前必须注入父级。在我的项目中,我使用了RequireJS和UI Router,因此它完全避免了angular.controller和其他构造。有人能给我一个纯香草Angular的解决方案吗?或者在RequireJS的帮助下?

我的goto解决方案是使用$scope变量来访问父作用域。

app.controller('MainCtrl', function() {
  this.name = 'from parent';
});
app.controller('ChildCtrl', function($scope) {
  this.name = $scope.parent.name;
});

这是一个完整的示例

为了在控制器之间共享数据时使用更好的设计,角度服务是更好的解决方案。如果您更改DOM布局并移动子ctrl,那么应用程序可能会崩溃。通过使用服务,控制器独立于DOM布局。