Ich habe dieses HTML:AngularJS, ist diese Art der Nutzung von Service gut?
<p>Hello {{name}}</p>
und der Controller ist:
function myCtrl(scope, service) {
scope.name = service.getUsername(); // service.getUsername() return "World!"
}
myCtrl.$inject = ['$scope', 'originalService'];
Der Service funktioniert gut, so dass ich füge den Code nicht hier ... In diesem Fall ist das Ergebnis "! Hallo Welt" ist änderte ich den HTML auf diese Weise:
<p>Hello {{service.getUsername()}}</p>
Aber das geht nicht.
änderte ich den Controller:
function myCtrl(scope, service) {
scope.ser = service;
}
myCtrl.$inject = ['$scope', 'originalService'];
und dann die HTML-
<p>Hello {{ser.getUsername();}}</p>
Das funktioniert!
Also meine Frage ist:
Ist dies der einzige Weg, um die Funktionen eines Dienstes direkt im HTML zu verwenden, oder ich bin etwas fehlt?
Gute Antwort. Ich würde vermeiden, das gesamte Service-Objekt dem Bereich hinzuzufügen, wenn es keine Art von View-Service ist und Ihre Vorlage die gesamte Funktionalität des Service benötigt. Im Allgemeinen möchten Sie nur die Daten/Funktionen auf dem Bereich hinzufügen, den Ihre Vorlage benötigt, und nicht mehr. –
@AndersEkdahl Ich stimme zu, wahrscheinlich wollen Sie diese Methode nicht sehr oft verwenden. Aber ich denke, alles hängt vom Service ab. Ich stelle hier nur Optionen vor, es gibt verschiedene Kompromisse, die berücksichtigt werden müssen. –
@ pkozlowski.opensource danke für die Antwort – Bruno