Condivisione di una variabile tra i controller in angular.js

Sono nuovo di angular e mi chiedo come posso condividere una variabile tra i controller in angular. Sto usando i seguenti script –

In Main.js:

function MainCntl($scope) { ---code } function SearchCtrl($scope, $http) { $scope.url = 'http://10.0.0.13:9000/processAdHoc'; $scope.errorM = "No results"; $scope.search = function() { $http.post($scope.url, { "data" : $scope.keywords}). success(function(data, status) { $scope.status = status; $scope.data = data; $scope.result = data; alert('yes'); }) . error(function(data, status) { $scope.data = data || "Request failed"; $scope.status = status; alert('no'); $scope.result = "failed"; }); }; } 

In Index.html

  ---code 
---code

{{result}}

Tutto funziona bene con l’ajax che sto inviando dati e ricevendo una risposta, la mia domanda è la seguente:

Nella funzione SearchCtrl ho una variabile chiamata $ scope.result che verrà successivamente indicata in Index.html. Se inserisco il codice html che contiene quella variabile nel controller SearchCtrl funziona bene, ma se è nel controller MainCtrl non funziona. Come posso condividere questa variabile tra i controller.

Grazie in anticipo

Utilizzare un servizio e iniettarlo su entrambi i controller e indirizzare le proprie variabili scope alla variabile services.

Esempio:

 angular.module("yourAppName", []).factory("myService", function(){ return {sharedObject: {data: null } } }); function MainCtrl($scope, myService) { $scope.myVar = myService.sharedObject; } function SearchCtrl($scope, $http, myService) { $scope.myVar = myService.sharedObject; } 

Nel tuo modello fai:

 {{myVar.data}} 

Guarda un esempio Usi Angular v1.1.5

Il motivo per cui lo inserisci in un object interno è quello di conservare i tuoi riferimenti, se lo tieni senza “sharedObject” e modifichi quell’object, il tuo bind indicherà il vecchio riferimento e non mostrerebbe nulla nel modello.