Angular-styleguide: le guide de service ne fonctionne pas

Créé le 25 juil. 2016  ·  5Commentaires  ·  Source: johnpapa/angular-styleguide

Je ne sais pas si l'équipe angulaire avait des idées mitigées sur les services et les usines. Mais le code et les idées mentionnés dans la section services ne correspondent pas, même pas sur le site d'angular. Si l'enregistrement de service prend une fonction constructeur comme deuxième argument, et qu'elle est supposée être invoquée comme le ferait un constructeur, avec le mot-clé new , alors pourquoi ne puis-je pas la traiter comme un véritable constructeur passant des paramètres ?

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;
    }
})();

Manette

(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

Commentaire le plus utile

Tous les 5 commentaires

Utiliser l'usine au lieu du service
Angular est singleton pour l'usine et les services...

(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); 
        }
    }
}) ();

Dans le contrôleur

(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';
    }
}) ();

Ce n'est pas juste mon ami.

@mroutput , oui, mais quel est le meilleur moyen ?

@sava-vidakovic. pour moi aussi

c'est comme ça qu'ils fonctionnent :)

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

amiceli picture amiceli  ·  7Commentaires

jejja picture jejja  ·  25Commentaires

kdekooter picture kdekooter  ·  8Commentaires

annabellor picture annabellor  ·  9Commentaires

jansepke picture jansepke  ·  12Commentaires