Angular-styleguide: Serviceanleitung funktioniert nicht

Erstellt am 25. Juli 2016  ·  5Kommentare  ·  Quelle: johnpapa/angular-styleguide

Ich bin mir nicht sicher, ob das kantige Team gemischte Vorstellungen von Dienstleistungen und Fabriken hatte. Aber der Code und die Ideen, die im Abschnitt Dienste erwähnt werden, stimmen nicht, nicht einmal auf der Website von angle. Wenn die Dienstregistrierung eine Konstruktorfunktion als zweites Argument verwendet und sie wie ein Konstruktor mit dem Schlüsselwort new aufgerufen werden soll, warum kann ich sie dann nicht als echten Konstruktor behandeln, der Parameter übergibt?

Service

(function () {
    angular
        .module("App")
        .service("Person", Person);

    //angular wants my parameters to be injectables.
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
})();

Regler

(function () {
    angular
        .module("App")
        .controller("DemoController", DemoController);

    DemoController.$inject = ["Person"];

    function DemoController(Person) {
        var a = new Person("rafael", 22);// ERROR

        var Demo = this;

        Demo.title = "Demo";
    }
})();
question

Hilfreichster Kommentar

Alle 5 Kommentare

Fabrik statt Service nutzen
Angular ist Singleton für Fabrik und Dienstleistungen...

(function() {

    angular
        .module('App')
        .factory('servicePerson', servicePerson);

    function servicePerson() {
        function Person(name, age) {
            this.name = name;
            this.age = age;
        }

        Person.prototype.alert = function() {
          alert('Name:' + this.name +' Age:'+ this.age);
        }

        var service = {
            newPerson : newPerson
        }

        return service;

        function newPerson(name, age){
            return new Person(name, age); 
        }
    }
}) ();

Im Controller

(function() {

    angular
        .module('App')
        .controller('DemoController', DemoController);

    DemoController.$inject = ['servicePerson'];

    function DemoController(servicePerson) {
        var a =  servicePerson.newPerson('rafael', 22);
        a.alert();
        var Demo = this;

        Demo.title = 'Demo';
    }
}) ();

Das ist einfach nicht der richtige Freund.

@mroutput , ja, aber was ist der beste Weg?

@sava-vidakovic. für mich auch

so funktionieren sie :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen