Dummy
Dummy

Reputation: 21

AngularJS access parent scope

I'm new to angularjs and I'm trying to do some things that I don't know if is a good practice.

Well, I have a main page where I want to show the messages of all other controller and views.

In this "main" view I have the following

<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>

When I set a message in my MainController the message is shown, but when I navigate to another controller it isn't.

Google told me that it happens because I'm working with different scopes.

I would like to know:

Upvotes: 0

Views: 632

Answers (1)

Numyx
Numyx

Reputation: 1758

Different controller use different scopes and thats right and you should try to change that. First thing you could do is using the $rootScope, where all other scopes are derivated from. But that kind of a misuse, the imo better solution is creating a shared messageService:

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

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

and inject it to your controller:

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

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

Upvotes: 1

Related Questions