在我的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/