2016-06-20 9 views
0

Ich habe einen Dienst erstellt, der einige Werte enthält, und ich befülle ihn und importiere ihn in zwei Controller.
Problem ist, dass der erste Controller alle Daten darin sehen.
Aber zweite Controller sehen nur leere Werte.
Da der Dienst Singleton ist, sollte er in beiden sichtbar sein.
Mache ich hier etwas falsch?Warum injiziert Dienst in mehreren Controllern keine Werte?

app.service("MyModel", ['$filter', function ($filter) { 
    this.items = []; 
}]); 
app.controller('FirstController', ['$scope', 'MyModel', function ($scope, MyModel) { 
    var vm = this; 
    vm.MyModel = MyModel; 
}]); 
app.controller('SecondController', ['$scope', 'MyModel', function ($scope, MyModel) { 
    var vm = this; 
    vm.MyModel = MyModel; // empty (like a new instance) 
}]); 
+0

Können Sie eine Live-Demo veröffentlichen, um das Problem zu reproduzieren? – elclanrs

+0

Ich nehme an, dass dieser Service nichts zurückgibt? – abdoutelb

+1

'[$ scope ',' MyModel ', Funktion ($ scope, MyModel) {' fehlender Bereich. – Jai

Antwort

0

Zunächst initialisieren Sie in Ihrem Code selbst this.items = []; Und in beiden Controller zuweisen Sie Service-Referenz (vm.MyModel = MyModel;). Hier hat Ihr Service ein leeres Array, das vm.MyModel zugewiesen ist.

Zum Beispiel: Verwenden Sie dieses

app.controller('FirstController', ['$scope', 'MyModel', function ($scope, MyModel) { 
    var vm = this; 
    MyModel.items = [1,2 3, 4]; 
}]); 
app.controller('SecondController', ['$scope', 'MyModel', function ($scope, MyModel) { 
    var vm = this; 
    console.log(MyModel.items); \\ it will print array [1, 2, 3, 4] 
}]); 

In Singleton-Entwurfsmuster nur ein Objekt erstellt wird und das gleiche ist für alle, die danach fragen geteilt. Wenn Sie in diesem Fall den SERVICE an einen beliebigen Controller senden, wird die Referenz dieses SERVICE an diesen Controller übergeben. Wenn sich also das SERVICE-Objekt vom Controller ändert, wird es auch in anderen Controllern angezeigt.

+0

Es sei denn, er speichert den Verweis auf das Array. –

Verwandte Themen