/ / Współdziel metody usługi, ale oddziel dane dla każdego kontrolera w angularJS - angularjs

Udostępnij metody usługi, ale zachowaj oddzielne dane dla każdego kontrolera w angularJS - angularjs

Jaki jest najlepszy sposób na dzielenie funkcjonalności usługi między administratorami, ale podawanie różnych danych każdemu administratorowi?

Odkryłem, że utrzymywanie trwałości danych wUsługa jest doskonałym rozwiązaniem do uwolnienia kontrolerów od potencjalnie zduplikowanej logiki. Ale jeśli potrzebuję innego kontrolera do korzystania z usługi, dane będą udostępniane między kontrolerami.

Jaki jest najlepszy sposób podawania różnych danychróżni kontrolerzy z tej samej usługi? Myślałem o czymś podobnym do wzorca Observer. Usługa zachowałaby kolekcję kontrolerów i stworzyła dla nich instancję danych.

Jakieś pomysły?

Odpowiedzi:

1 dla odpowiedzi № 1

upewnij się, że udostępniona funkcjonalność nie zależy od udostępnionych danych

na przykład

 app.service("abc" , function(){

var sharedWork = function(x) {
/// some logic here
}

return {
sharedWork : sharedWork
}

});

Wiem, że powyższy kod jest bardzo prosty, ale chciałem pokazać, że ... wynik programu SharedWork zależy tylko od jego danych wejściowych, dlatego można go ponownie wykorzystać na kontrolerach ...


1 dla odpowiedzi nr 2

Zdefiniuj cztery różne usługi, które korzystają z tej samej implementacji.

function SomeSrvc(foo, bar) {
}

myApp.service("srvc1", ["foo", "bar", SomeSrvc]);
myApp.service("srvc2", ["foo", "bar", SomeSrvc]);
myApp.service("srvc3", ["foo", "bar", SomeSrvc]);
myApp.service("srvc4", ["foo", "bar", SomeSrvc]);