2016-06-18 14 views
0

Ich bin ein Lerner in angularJs. Heute lese ich einen Unterschied zwischen Fabrik und Service-Methode in 'Novice to Ninja' von angular JS.Erstellen einer Factory-Methode basierend auf Parametern

Die Aussage ist -.

„Beachten Sie, dass Sie ein Objekt aus der Fabrik Funktion zurückkehren, so dass Sie die Freiheit haben, die auf der Basis bestimmter Parameter zurückzukehren zu bestimmen Objekt Dies ist nicht der Fall mit Dienstleistungen, bei denen Sie Übergeben Sie einfach eine Konstruktorfunktion an service(). "

So kann mir jemand beim Erstellen solcher Beispiel helfen, in denen ich ein benutzerdefiniertes Objekt basierend auf Parametern zurückgeben kann.

Vielen Dank im Voraus.

Antwort

1

Edited an die Anbieter hinzufügen

var app = app.moudule("app", []); 

app.provider('customeFactory', function(){ 

    var type; 
    return { 

    setType: function(value){ 
     type = value; 

    }, 

    $get: function(){ 
     if (type == "typeA"){ 
     return { 
      type: 'TypeA was set:' + type; 
     } 
     }else { 
      return { 
      value: 'another type was set:' + type; 
      } 
     } 


    } 

    } 

}) 


app.config(function(customeFactoryProvider){ 
    customeFactoryProvider.setType("typeA"); 
}) 

Es in abstrakter Weise bedeutet

factory kehrt das Objekt, das Sie es anpassen, wie Sie wollen, wie es

var factoryFunc = function(){ 
    var saveFunc = function(){ /* logic */ } 
    var updateFunc= function(){/* logic */ } 
    // this function not exposed since it not specified in the return object 
    var deleteFunc = function(){ /* */ } 
    var obj = { 
     save: saveFunc, 
     update: updateFunc 
    } 
    return obj; 
} 

// result now is the returned object {save, update} 
var result = factoryFunc(); 

enthüllt Modulmuster beschreiben, wo der Fall in service ist die Instanz

zurückgeben
var ServiceFunc = function() { 
    this.funcA = function() {} 
    this.funcB = function() {} 
} 
// result now is instance of ServiceFunc with all its functions A and B 
var result = new ServiceFunc(); 
+0

Danke für die Antwort. Ich habe Ihren Punkt, aber benötigt einige weitere Informationen, die wie in der Aussage (Aussage in Frage) erwähnt, dass wir das benutzerdefinierte Objekt basierend auf "bestimmten Parametern" erhalten. Also wollen nur wissen, wie kann ich die Parameter übergeben und benutzerdefinierte Objekt basierend auf Parameter erhalten. –

+0

Means basierend auf Parameter I erhalten Objekt, das nur "Speichern" -Funktionalität enthält und basierend auf anderen Parameter zurückgegebenen Objekt enthält "alle drei Funktionen wie Update speichern und löschen". –

+0

was ich denke, dass Angular ist verantwortlich für Instantiierung "Factory" und "Service" und injizieren sie, wenn es benötigt und jeder Anbieter hat seinen eigenen Weg, es mit "Factory" zu instanzen, es ist nur ausführen als Funktion 'factory()' und 'service' als Konstruktfunktion 'new service()' –

Verwandte Themen