【问题标题】:Parent view doesn't reflect changes by child controller父视图不反映子控制器的更改
【发布时间】:2015-04-20 03:59:56
【问题描述】:

我对 Angular 有点陌生,所以如果这是一个菜鸟问题,我深表歉意。基本上我有一个控制器试图更改父范围的值。它成功了,但父视图永远不会更新。

我的父视图如下所示:

<html ng-app="app" ng-controller="appController">
  <head>
      ...
  </head>
  <body>
    This is the outer view.<br>
    <br>
    {{ welcome }}
    <div ng-view style="width: 100%; border: 1px solid black; padding: 10px;">

    </div>
  </body>
</html>

我正在尝试让子控制器更改 welcome 的值,如此处所示。

app
.controller('homeController', function ($scope) {
  $scope.welcome = "Hello world!"
  $scope.$parent.welcome = "It works!!!!!!!!!";
  console.log("Home controller loaded.");
})
.controller('appController', function ($scope) {
  $scope.welcome = "It doesn't work!"
  console.log("App controller loaded.");
});

代码执行了,但我从来没有看到消息“It works!!!!!!!”就像我期望的那样。这是一个证明我的问题的 plunker:http://plnkr.co/edit/Dywofrx0u3QOaiKe9MsJ?p=preview

【问题讨论】:

  • 你读过关于广播和发射事件的知识吗?
  • 即使我是 angularjs 新手,请阅读这些事件,它们会帮助你

标签: angularjs angularjs-scope


【解决方案1】:

要像这样应用对父范围的更改,您需要将数据嵌套在一个对象中。

例如,如果您的家庭控制器有这个:

 $scope.someObject = {};
 $scope.someObject.welcome = "Hello from the appController!"

然后是您的子控制器:

$scope.$parent.someObject.welcome = "Hello from the homeController!";

这将正常工作。

这是更新后的 Plunker:http://plnkr.co/edit/idWEgd8QRwts3zyR6vXJ?p=preview

非常非常相关:Update parent scope variable

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多