Ich bin mir nicht sicher, ob das kantige Team gemischte Vorstellungen von Dienstleistungen und Fabriken hatte. Aber der Code und die Ideen, die im Abschnitt Dienste erwähnt werden, stimmen nicht, nicht einmal auf der Website von angle. Wenn die Dienstregistrierung eine Konstruktorfunktion als zweites Argument verwendet und sie wie ein Konstruktor mit dem Schlüsselwort new
aufgerufen werden soll, warum kann ich sie dann nicht als echten Konstruktor behandeln, der Parameter übergibt?
(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";
}
})();
Fabrik statt Service nutzen
Angular ist Singleton für Fabrik und Dienstleistungen...
(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);
}
}
}) ();
Im Controller
(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';
}
}) ();
Das ist einfach nicht der richtige Freund.
Arbeite für mich.
http://jsfiddle.net/sava/612phm6n/
@mroutput , ja, aber was ist der beste Weg?
@sava-vidakovic. für mich auch
so funktionieren sie :)
Hilfreichster Kommentar
Arbeite für mich.
http://jsfiddle.net/sava/612phm6n/