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?
(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";
}
})();
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.
Bekerja untuk saya.
http://jsfiddle.net/sava/612phm6n/
@mroutput , ya, tapi apa cara terbaiknya?
@sava-vidakovic. untuk saya juga
begitulah cara mereka bekerja :)
Komentar yang paling membantu
Bekerja untuk saya.
http://jsfiddle.net/sava/612phm6n/