javascript - angularJS 中的嵌套 Controller - 无法从第三个 Controller 访问第二个 Controller

标签 javascript angularjs

我有 3 个 div 元素和 3 个 Controller 。

第二个 Controller 可以访问第一个 Controller 。但第三个不起作用。

 var app = angular.module("app", [])

        .controller("countryController", function () {
            this.Name = "Turkey";
        })

        .controller("cityController", function () {
            this.Name = "Istanbul";
        })

        .controller("streetController", function () {
            this.Name = "Istiklal";
        })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="countryController as countryCtrl">
        {{countryCtrl.Name}}
        <div ng-controller="cityController as cityCtrl">
            {{countryCtrl.Name}} -  {{cityCtrl.Name}}
        </div>
        <div ng-controller="streetController as streetCtrl">
            {{countryCtrl.Name}}  - {{cityCtrl.Name}}  {{streetCtrl.Name}}
        </div>
    </div>

最佳答案

您无法获取 {{cityCtrl.Name}},因为它是第三个 Controller 的同级 Controller 。相反,您可以使用 $parent$rootScope 来获取该值。

或者将其嵌套在第二个 Controller 中:

var app = angular.module("app", [])

  .controller("countryController", function() {
    this.Name = "Turkey";
  })
  .controller("cityController", function() {
    this.Name = "Istanbul";
  })
  .controller("streetController", function() {
    this.Name = "Istiklal";
  })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="countryController as countryCtrl">
  {{countryCtrl.Name}}
  <div ng-controller="cityController as cityCtrl">
    {{countryCtrl.Name}} - {{cityCtrl.Name}}

    <div ng-controller="streetController as streetCtrl">
      {{countryCtrl.Name}} - {{cityCtrl.Name}} {{streetCtrl.Name}}
    </div>
  </div><!--cityCtrl closed-->
</div>

关于javascript - angularJS 中的嵌套 Controller - 无法从第三个 Controller 访问第二个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43653187/

相关文章:

javascript - 如何使子链接指令函数在父 Controller 之前运行?

javascript - 如何编写带有可传递参数的回调的 jQuery 函数?

java - 如何使用 Java 代码检查客户端浏览器中是否启用了 JavaScript

javascript - 获取当前开放的钛合金窗口?

javascript - Cordova 文件传输 |如何将标题中的字符串放入 TargetPath?

javascript - ngRoute 加载模板时 OffsetWidth/offsetHeight 为零

javascript - 获取所有 Angular Controller

javascript - Angular JavaScript 中的异步调用

javascript - 命名默认参数的 JSDoc Typescript 检查

javascript - Angularjs - 匿名模板加载导致拦截器中的响应错误