Argument 'fn' ist keine Funktion, die eine Zeichenfolge hat
Ich habe einen Teil in meinem angular-Anwendung auf, die ich habe festgestellt controller
da hab ich dann das Argument 'fn' ist nicht ein Fehler einer Funktion, kann jemand Blick auf meinen code und erklären, warum ich die Fehler?
Wäre ich sehr dankbar 🙂
html-markup:
<section class="col-lg-12" data-ng-controller="MessageController">
<fieldset>
<legend>{{ 'MESSAGES' | translate }}</legend>
</fieldset>
<div class="margin-left-15">
<ul class="list-style-button">
<li data-ng-repeat="message in MSG">{{ message }}</li>
</ul>
</div>
</section>
controller:
(function() {
'use strict';
var controllers = angular.module('portal.controllers');
controllers.controller('MessageController', ['$scope', 'MessageService', '$rootScope', function MessageController($scope, MessageService, $rootScope) {
$rootScope.MSG = MessageService.getMessages();
$rootScope.$watch('MSG', function(newValue) {
$scope.MSG = newValue;
});
}]);
}());
Service:
(function() {
'use strict';
var messageServices = angular.module('portal.services');
messageServices.factory('MessageService', ['MessageData', 'localStorageService', 'UserService'], function(MessageData, localStorageService, UserService) {
return new MessageService(MessageData, localStorageService, UserService);
});
function MessageService(MessageData, localStorageService, UserService) {
this.messageData = MessageData;
this.localStorageService = localStorageService;
this.userService = UserService;
}
MessageService.prototype.getMessages = function() {
var locale = this.userService.getUserinfoLocale();
var messages = this.localStorageService.get(Constants.key_messages + locale);
if (messages !== null && messages !== undefined) {
return JSON.parse(messages);
} else {
return this.messageData.query({
locale: locale
}, $.proxy(function(data, locale) {
this.save(Constants.key_messages + locale, JSON.stringify(data));
}, this));
}
};
MessageService.prototype.save = function(key, value) {
this.localStorageService.add(key, value);
};
}());
Daten:
(function() {
'use strict';
var data = angular.module('portal.data');
data.factory('MessageData', function($resource) {
return $resource(Constants.url_messages, {}, {
query: {
method: 'GET',
params: {
locale: 'locale'
},
isArray: true
}
});
});
}());
Reihenfolge der js-Dateien im html-Kopf:
<script src="js/lib/jquery-1.10.js"></script>
<script src="js/lib/angular.js"></script>
<script src="js/lib/angular-resource.js"></script>
<script src="js/lib/angular-translate.js"></script>
<script src="js/lib/angular-localstorage.js"></script>
<script src="js/lib/jquery-cookies.js"></script>
<script src="js/lib/bootstrap.js"></script>
<script src="js/portal.js"></script>
InformationsquelleAutor der Frage J.Pip | 2013-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
War das problem in der Verwendung der 'falsch' - syntax zum erstellen des service
anstelle der Verwendung:
Musste ich nutzen:
Schloss ich das array mit Parametern zu bald, und da bin ich noch lernen, ich sah es nicht direkt, jedenfalls, ich hoffe, ich kann anderen helfen, die stolpern das.
InformationsquelleAutor der Antwort J.Pip
Heute bekam ich die gleiche Art von Fehler zu tun, dass dumme Fehler:
statt:
In der Tat die Zeichenfolge "myFactory" gebracht wurde, in den Injektor, die darauf wartete, für eine Funktion und kein string.
Das erklärte die [ng:areq] Fehler.
InformationsquelleAutor der Antwort Xavier Haniquaut
Den oben genannten Antworten halfen mir wesentlich bei der Korrektur das gleiche Problem hatte ich in meiner Anwendung, die sich aus einer anderen Ursache.
Unter gebaut, meine client-app ist verkettet und minified, also ich Schreibe meine Eckige insbesondere zu verhindern, dass Probleme im Zusammenhang mit. Ich definiere meine
config
wie folgt(Ich definiere eine Funktion, die
$inject
es als Modul und erklären, was es ist).Und dann habe ich versucht zu registrieren, die
config
gerade als ich mich registriert habe andere Module in meiner app (Controller, Direktiven, etc..).Dies ist falsch, und gab mir den oben genannten Fehler. Also wechselte ich zu
Und es funktionierte.
Ich denke, die angular Entwickler gedacht
config
um eine singuläre Instanz und durch, so dass Eckig nicht akzeptieren, ein name, wennconfig
registriert ist.InformationsquelleAutor der Antwort svarog
Ich hatte das gleiche Problem und In meinem Fall war das problem mit angular-cookies.js Datei. War es im Ordner mit anderen angularjs-Skripte und wenn ich verwendet haben, zu schlucken, zu minifizieren meine js-Dateien der Fehler aufgetreten ist.
Einfache Lösung war einfach zu platzieren angular-cookies.js Datei in einen anderen Ordner, außerhalb des ausgewählten Ordners zu verkleinern js-Dateien.
InformationsquelleAutor der Antwort Münich