当前位置: 首页 > 面试题库 >

参数'fn'不是函数得到的字符串

曹沛
2023-03-14
问题内容

我在我的角度应用程序中绑定了控制器,因此
自那以后我得到了参数’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);
    }
]);

我很快用参数关闭了数组,由于我仍在学习,所以我没有直接看到它,无论如何我希望我能帮助那些偶然发现此问题的人。



 类似资料:
  • 我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。

  • 我想对一个浮点数进行四舍五入,得到点后的两位数。但我收到了一个错误: float()参数必须是字符串或数字,而不是“NoneType” 在评级模型的评级字段中四舍五入是一个坏主意,因为平均_评级不会四舍五入

  • 本文向大家介绍Python 由字符串函数名得到对应的函数(实例讲解),包括了Python 由字符串函数名得到对应的函数(实例讲解)的使用技巧和注意事项,需要的朋友参考一下 把函数作为参数的用法比较直观: 但有些情况下,‘要传递哪个函数'这个问题事先还不确定,例如函数名与某变量有关。 可以利用 func = globals().get(func_name) 来得到函数: 以上这篇Python 由字符

  • 在下面的代码中,当函数print_uart传输字符串“hello world”时,*s中到底收到了什么?是字符H还是存储字符串“hello world”的内存地址?

  • 问题内容: 我正在尝试在Angular应用程序中使用Jasmine进行一些单元测试,但遇到一些错误。 错误 规格 App.js 我既没有使用Yeoman也没有使用Karma,因为这是我使用Angular的第一个应用程序。 包含文件 问题答案: 我认为您可能只是对测试依赖项的配置存在问题。没有Karma,我不知道您如何进行测试,但是我想您在某个地方有Jasmine的配置文件,您可以在其中指定要包含的

  • 我试图运行一个Selenium脚本与运行它的选项使用chrome或headless驱动程序。这可能不是正确的实现方法,但这是我的第一个想法。解决办法可能是完全避免这种情况... 起作用的示例: envDomain标记也按预期工作,所以我不确定为什么driverName参数会以不同的方式工作。