【问题标题】:Accessing Parent controller variables in child controllers Angularjs在子控制器Angularjs中访问父控制器变量
【发布时间】:2023-03-10 09:52:01
【问题描述】:

我有一个问题,我想听听你的建议。 我在父控制器 div 中使用了子控制器。例如,

<div ng-controler="parent">
    <div ng-controler="child"></div>
</div>

在 js 文件中, 我使用module.controller("Parent") 语法来定义控制器。 我没有在控制器中使用 $scope 来存储变量,但我使用var self = this; 并将所有变量都放在 self 对象上。现在我想在子控制器中使用父变量。因为我没有使用范围,所以我无法使用此语法$scope.parent。子控制器中的变量。

您能否就如何在子控制器中使用父控制器变量提出建议。任何帮助表示赞赏。

【问题讨论】:

标签: angularjs angularjs-controller


【解决方案1】:

答案就在问题中。在父控制器中,添加以下行:

$scope.parent = self;

现在在子控制器中,由于它的作用域继承自父作用域,你可以使用

$scope.parent.foo 

访问父控制器的 foo 属性。

【讨论】:

  • 感谢您的回答。但我没有使用 $scope 来存储 dom 元素的变量。我使用 var self= this 将它存储在一个 self 变量中;所以我不能在孩子中使用父作用域变量,因为我没有在作用域上保留变量。
  • 我明白你做了什么。您在父控制器中将名为 self 的局部变量初始化为 this。是什么让您认为这将帮助您从孩子访问父控制器?不会的。
  • 可以通过下面提到的方式完成。HTML
    { {cc.parentCities | json}}
    {{pc.cities | json}}
    JS 函数 ParentCtrl() { var vm = this; vm.cities = [“纽约”、“阿姆斯特丹”、“巴塞罗那”]; } 函数 ChildCtrl() { var vm = this; ParentCtrl.apply(vm, arguments); // 继承父控件 vm.parentCities = vm.cities; }。但我使用不同的语法来定义控制器,即 var a =module; module.controller('控制器名称').
猜你喜欢
  • 1970-01-01
  • 2014-02-22
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多