Ich möchte eine Dienstprogrammklasse in Angular.js erstellen, die von mehreren Controllern verwendet werden kann.Klasse Utils in Angular.js
Bisher habe ich dies:
'use strict';
angular
.module('App')
.factory('AppUtils', AppUtils);
function AppUtils() {
var vm = this;
vm.getPersonOf = getPersonOf;
function getPersonOf(personId, allPersons) {
var person = {};
person.personId = {personId: personId};
allPersons.forEach(function(p) {
if (p.personId === personId) {
person = p;
}
});
return person;
}
}
Und ich versuchte es in einem Controller wie folgt zu verwenden:
'use strict';
angular
.module('App')
.controller('AppController', AppController);
function AppController(personId, allPersons, AppUtils) {
var vm = this;
vm.personId = personId;
vm.person = AppUtils.getPersonOf(vm.personId, allPersons);
...
}
Aber ich bekomme diese:
PhantomJS 1.9.8 (Windows 7 0.0.0) App should dismiss modal FAILED Error: [$injector:undef] Provider 'AppUtils' must return a value from $get factory method. http://errors.angularjs.org/1.5.0/ $injector/undef?p0=InvoiceUnitsUtils
(Die echte Namen wurden umbenannt, um es einfacher zu machen.)
Warum bekomme ich diesen Fehler? Deklariere ich das Utility-Modul nicht ordnungsgemäß?
, das nicht ist, wie man verwendet 'factory'. Was Sie tun, sollte ein "Service" sein – floribon
Sie müssen nur am Ende der Fabrik 'vm;' zurückgeben. – daymosik