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 ?
(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";
}
})();
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.
Travaille pour moi.
http://jsfiddle.net/sava/612phm6n/
@mroutput , oui, mais quel est le meilleur moyen ?
@sava-vidakovic. pour moi aussi
c'est comme ça qu'ils fonctionnent :)
Commentaire le plus utile
Travaille pour moi.
http://jsfiddle.net/sava/612phm6n/