在我的ParentController中,我目前有:

   $scope.grid = {
                $index: null,
                view: [],
                data: []
            };


在我的ChildController中,我目前有:

   .controller('ChildController', ['$Scope',
        function ($Scope) {

            $Scope.grid.$index = null;
            $Scope.grid.view = [];
            $Scope.grid.data = [];


据我了解,这使我可以在ChildController中填充$ Scope.grid.data
并且还具有可以在Parent Controller内的$ Scope.grid.data上运行的函数。

现在,我想开始使用“作为控制器”语法。因此,如果我正确理解了这一点,则需要在两个HTML页面中编写代码,例如HTML中的控制器:

<div data-ng-controller="ParentController as parent" ..

<div data-ng-controller="ChildController as child" ..


而我的父控制器是这样的:

   this.grid = {
                $index: null,
                view: [],
                data: []
            };


如果执行此操作,那么在我的ChildController中应如何引用grid.view?我是否以某种方式将'parent'传递给ChildController,然后在我的孩子中使用:

parent.grid.view = [];


最后,我听说“作为控制器”语法是实验性的。现在已经过去了吗?

最佳答案

只要您不更改代码,“ as”语法就不会有任何区别。

如果您将ParentController更改为

this.grid = {
  $index: null,
  view: [],
  data: []
};


那么您仍然需要在$scope中使用ChildController引用,但是要添加另一个属性:

   .controller('ChildController', ['$Scope',
    function ($Scope) {

        $Scope.parent.grid.$index = null;
        $Scope.parent.grid.view = [];
        $Scope.parent.grid.data = [];


如您所见,它不仅更加复杂,而且还将代码耦合到HTML:如果您决定将HTML更改为ParentController as someController,则ChildController会中断。

因此,即使使用“ as”语法,您也希望grid$scope的属性。

关于javascript - 使用“作为 Controller ”语法时,如何在子 Controller 中引用父级的作用域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23568805/

10-09 21:58