Sök…


Anmärkningar

En mycket vanlig fråga när man arbetar med Angular är hur man delar data mellan kontrollerare. Att använda en tjänst är det vanligaste svaret och detta är ett enkelt exempel som visar ett fabriksmönster för att dela vilken typ av dataobjekt som helst mellan två eller flera kontroller. Eftersom det är en referens för delat objekt kommer en uppdatering i en kontroller att finnas omedelbart tillgängligt i alla andra styrenheter som använder tjänsten. Observera att både service och fabrik och båda leverantörer .

Använda ngStorage för att dela data

Först inkludera ngStorage- källan i din index.html.

Ett exempel på att injicera ngStorage src skulle vara:

<head>
    <title>Angular JS ngStorage</title>
    <script src = "//ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
    <script src="https://rawgithub.com/gsklee/ngStorage/master/ngStorage.js"></script>
</head>

ngStorage ger dig 2 lagring, nämligen: $localStorage och $sessionStorage . Du måste kräva ngStorage och injicera tjänsterna.

Antag att om ng-app="myApp" skulle du injicera ngStorage enligt följande:

var app = angular.module('myApp', ['ngStorage']);
        app.controller('controllerOne', function($localStorage,$sessionStorage) {
        // an object to share
        var sampleObject = {
            name: 'angularjs',
            value: 1
        };
       $localStorage.valueToShare = sampleObject;
       $sessionStorage.valueToShare = sampleObject;
    })  
.controller('controllerTwo', function($localStorage,$sessionStorage) {
    console.log('localStorage: '+ $localStorage +'sessionStorage: '+$sessionStorage);
})

$localStorage och $sessionStorage är globalt tillgängligt via alla kontroller så länge du injicerar dessa tjänster i kontrollerna.

Du kan också använda localStorage och sessionStorage av HTML5 . Att använda HTML5 localStorage kräver dock att du serielliserar och deserialiserar dina objekt innan du använder eller sparar dem.

Till exempel:

var myObj = {
    firstname: "Nic",
    lastname: "Raboy",
    website: "https://www.google.com"
} 
//if you wanted to save into localStorage, serialize it  
window.localStorage.set("saved", JSON.stringify(myObj));  

//unserialize to get object  
var myObj = JSON.parse(window.localStorage.get("saved"));

Dela data från en controller till en annan med hjälp av tjänst

Vi kan skapa en service att set och get data mellan controllers och sedan injicera den tjänsten i kontrollfunktionen där vi vill använda den.

Service:

app.service('setGetData', function() {
  var data = '';
    getData: function() { return data; },
    setData: function(requestData) { data = requestData; }
});

Styrenheter:

app.controller('myCtrl1', ['setGetData',function(setGetData) {

  // To set the data from the one controller
  var data = 'Hello World !!';  
  setGetData.setData(data);

}]);

app.controller('myCtrl2', ['setGetData',function(setGetData) {

  // To get the data from the another controller  
  var res = setGetData.getData();
  console.log(res); // Hello World !!

}]);

Här kan vi se att myCtrl1 används för att setting in data och myCtrl2 används för getting myCtrl2 data. Så vi kan dela uppgifterna från en controller till en annan controller så här.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow