Angular-styleguide: руководство по обслуживанию не работает

Созданный на 25 июл. 2016  ·  5Комментарии  ·  Источник: johnpapa/angular-styleguide

Я не уверен, что у команды angular были смешанные представления об услугах и фабриках. Но код и идеи, упомянутые в разделе услуг, не складываются, даже на сайте angular. Если при регистрации службы в качестве второго аргумента используется функция конструктора и предполагается, что она вызывается как конструктор с ключевым словом new , то почему я не могу рассматривать его как настоящий конструктор, передающий параметры?

Услуга

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

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

Контроллер

(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

Самый полезный комментарий

Работай на меня.
http://jsfiddle.net/sava/612phm6n/

Все 5 Комментарий

Использовать завод вместо обслуживания
Angular - это синглтон для фабрики и сервисов ...

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

В контроллере

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

Это просто не тот друг.

Работай на меня.
http://jsfiddle.net/sava/612phm6n/

@mroutput , да, но как лучше?

@ sava-vidakovic. для меня тоже

вот как они работают :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jansepke picture jansepke  ·  12Комментарии

sgbeal picture sgbeal  ·  7Комментарии

yosiasz picture yosiasz  ·  7Комментарии

jusefb picture jusefb  ·  9Комментарии

Foxandxss picture Foxandxss  ·  13Комментарии