Angular-styleguide: panduan layanan tidak berfungsi

Dibuat pada 25 Jul 2016  ·  5Komentar  ·  Sumber: johnpapa/angular-styleguide

Saya tidak yakin apakah tim sudut memiliki ide yang beragam tentang layanan dan pabrik. Tetapi kode dan ide yang disebutkan di bagian layanan tidak cocok, bahkan di situs angular. Jika pendaftaran layanan mengambil fungsi konstruktor sebagai argumen kedua, dan seharusnya dipanggil sebagai konstruktor, dengan kata kunci new , lalu mengapa saya tidak dapat memperlakukannya sebagai konstruktor sejati yang meneruskan parameter?

Melayani

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

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

Pengontrol

(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

Komentar yang paling membantu

Semua 5 komentar

Gunakan pabrik alih-alih layanan
Angular adalah singleton untuk pabrik dan layanan...

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

Di pengontrol

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

Itu tidak benar teman.

@mroutput , ya, tapi apa cara terbaiknya?

@sava-vidakovic. untuk saya juga

begitulah cara mereka bekerja :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat