我在我的角度应用程序中绑定了控制器,因此 自那以后我得到了参数’fn’不是函数错误,有人可以看一下我的代码并解释为什么会出现该错误吗?
我会非常感激:)
html标记:
<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>
控制器:
(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; }); }]); }());
服务:
(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); }; }());
数据:
(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 } }); }); }());
html头中js文件的顺序:
<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>
问题在于使用“错误”语法创建服务, 而不是使用:
messageServices.factory('MessageService', ['MessageData','localStorageService', 'UserService'], function(MessageData, localStorageService, UserService){ return new MessageService(MessageData, localStorageService, UserService); } );
我不得不使用:
messageServices.factory('MessageService', ['MessageData','localStorageService', 'UserService', function(MessageData, localStorageService, UserService){ return new MessageService(MessageData, localStorageService, UserService); } ]);
我很快用参数关闭了数组,由于我仍在学习,所以我没有直接看到它,无论如何我希望我能帮助那些偶然发现此问题的人。