Anruf einer Service-Funktion von einem Controller in AngularJS
- Controller-Code
'use strict';
angular.module('MyApp').controller('ArticleContribEmailController', [
'$scope', 'ArticleAppState', 'fbsUserDataService', 'contribEmailService',
function ($scope, ArticleAppState, fbsUserDataService, contribEmailService ) {
this.userChanged = function () {
if (fbsUserDataService.initialized && fbsUserDataService.user && ArticleAppState.page_data) {
//user has authenticated.
contribEmailService.initForm();
}
};
//watch for when user data is available, run userChanged.
$scope.$watch(function() { return fbsUserDataService.user; }, this.userChanged);
$scope.$watch(function() { return fbsUserDataService.initialized; }, this.userChanged);
}
]);
Service-Code
'use strict';
angular.module('forbesArticleApp').service('contribEmailService', [
'$injector', '$route', 'ArticleAppState', 'fbsUserFormFactory', 'fbsUserDataService',
function initForm ($injector, $route, ArticleAppState, fbsUserFormFactory, fbsUserDataService) {
console.log("Hello world!");
}
]);
Ich möchte nur das Feuer der contribEmailService.initForm()
Funktion aus dem call-in meinem controller, aber es wird ausgelöst, sobald die Seite geladen wird.
Wie kann ich einstellen, Wann die service-Funktion initForm()
genannt wird?
InformationsquelleAutor Prefix | 2015-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die korrigierte service-code:
Die service-Funktion ist eine Fabrik, die wiederum zurückzukehren, die eigentliche Leistung. So wird es laufen, wenn er das erste mal angefordert wird, als eine Abhängigkeit. Die Art und Weise Sie hatte es geschrieben, in der Tat,
contribEmailService
gewesen wäreundefined
innerhalb Ihrer Funktion, wegen Ihrer Fabrik nicht wirklich etwas zurückzugeben.Hoffe, das hilft!
InformationsquelleAutor Michael Hays
InformationsquelleAutor Khyati Acharya