gpt4 book ai didi

javascript - 使用 "as controller"语法时,如何在子 Controller 中引用父级的范围?

转载 作者:行者123 更新时间:2023-11-30 17:29:04 26 4
gpt4 key购买 nike

在我的 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 进行操作的函数。

现在我想开始使用“as controller”语法。因此,如果我理解正确的话,我需要在两个 HTML 页面内对我的 HTML 中的 Controller 进行编码,如下所示:

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

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

我的父 Controller 是这样的:

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

如果我这样做,那么在我的 ChildController 中我应该如何引用 grid.view?我是否以某种方式将“parent”传递到 ChildController 中,然后在我的 child 中使用:

parent.grid.view = [];

最后我听说“as controller”语法是实验性的。现在已经过了那个阶段了吗?

最佳答案

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

如果您将 ParentController 更改为

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

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

   .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 - 使用 "as controller"语法时,如何在子 Controller 中引用父级的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568805/

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