If you want to share data between controllers, you should use Angular Services. They are singleton that are intended to be used to share common code in your application. So, it is a good practice to put, for example, your $http request, or some data that is used in many places.
Some example would be:
https://jsfiddle.net/relferreira/2b5amcya/
JS:
angular.module('app', []);
angular.module('app')
.controller('MainController', mainController);
mainController.$inject = ['UserService'];
function mainController(UserService){
var vm = this;
vm.name = UserService.getName();
}
angular.module('app')
.controller('DetailController', detailController);
detailController.$inject = ['UserService'];
function detailController(UserService){
var vm = this;
vm.name = UserService.getName();
vm.other = 'test';
}
angular.module('app')
.factory('UserService', userService);
function userService(){
var name = 'Renan';
return{
getName: getName
}
function getName(){
return name;
}
}
HTML:
<div data-ng-app="app">
<div data-ng-controller="MainController as mainVm">
{{mainVm.name}}
</div>
<div data-ng-controller="DetailController as detailVm">
{{detailVm.name}}
{{detailVm.other}}
</div>
</div>