AngularJS 访问父作用域

AngularJS access parent scope

我是 angularjs 的新手,我正在尝试做一些我不知道是否是好的做法。

嗯,我有一个主页,我想在其中显示所有其他控制器和视图的消息。

在这个 "main" 视图中,我有以下内容

<div class="row" data-ng-repeat="msg in messages">
    <div class="col-lg-12">{{mgs.message}} 
        <a data-ng-click="close(msg)">&times;</a>
    </div>
</div>

当我在 MainController 中设置消息时,消息会显示,但当我导航到另一个控制器时,它不会显示。

Google 告诉我这是因为我在使用不同的范围。

我想知道:

不同的控制器使用不同的范围,这是正确的,你应该尝试改变它。您可以做的第一件事是使用 $rootScope,所有其他作用域都是从中派生的。但是这种误用,我认为更好的解决方案是创建一个共享的消息服务:

.factory('messageService', [
  function() {
    var messages = [];

    return {
      getMessages: function() {
        return messages;
      },
      addMessage: function(message) {
        messages.push(message)
      }
    }
  }
])

并将其注入您的控制器:

.controller('ctrl', ['$scope', 'messageService',
  function($scope, messageService) {
    $scope.messages = messageService.getMessages();
  }
])

笨蛋:http://plnkr.co/edit/6cnbx9okRA03tut7JzuF?p=preview