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

TypeError:未定义不是Angular Resource中的函数

郑安晏
2023-03-14
问题内容

尝试轮询copiesAngularJS资源上的自定义方法时,我在处收到以下错误angular.js:10033:(该方法copy工作正常。)

TypeError: undefined is not a function
at https://code.angularjs.org/1.3.0-beta.8/angular-resource.min.js:9:347
at Array.forEach (native)
at q (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:7:280)
at q.then.p.$resolved (https://code.angularjs.org/1.3.0-beta.8/angular-resource.min.js:9:329)
at J (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:101:5)
at J (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:101:5)
at https://code.angularjs.org/1.3.0-beta.8/angular.min.js:102:173
at g.$eval (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:113:138)
at g.$digest (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:110:215)
at g.$apply (https://code.angularjs.org/1.3.0-beta.8/angular.min.js:113:468)

Angular.js 10016-10035:

function consoleLog(type) {
  var console = $window.console || {},
      logFn = console[type] || console.log || noop,
      hasApply = false;

  // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
  // The reason behind this is that console.log has type "object" in IE8...
  try {
    hasApply = !!logFn.apply;
  } catch (e) {}

  if (hasApply) {
    return function() {
      var args = [];
      forEach(arguments, function(arg) {
        args.push(formatError(arg));
      });
      return logFn.apply(console, args); // This is line 10033 where the error gets thrown.
    };
  }

简化的资源:

angular.module('vgm.content-pages')
.factory('ContentPage', function($resource, $http) {

  return $resource('/api/content-page/:id', { id:'@page.id' }, {
    copy: {
      method: 'POST',
      url: '/api/content-page/copy/:id'
    },
    copies: {
      method: 'GET',
      isArray: true,
      url: '/api/content-page/copies/:id'
    }
  });

});

我收到错误的简化指令:

angular.module('vgm.genericForms')
.directive('vgmFormCopyPicker', function() {

  return {
    restrict: 'E',
    replace: true,
    templateUrl: '/static/common/generic-forms/widgets/view-copy-picker.html',
    scope: {
      resource: '=',
    },
    controller: function($scope, $element) {

      $scope.pages = [];

      $scope.loadCopies = function() {

        $scope.resource.$copies()
          .then(function(response) {
            $scope.pages = response.data;
          });

      };

    }
  };

});

一旦运行该loadCopies方法,执行该行就会$scope.resource.$copies()引发上面的错误。

在Chrome检查器中,我看到对API的调用实际上已完成。但是兑现诺言似乎会引发一些错误…

我该如何解决这个错误?

编辑:

$scope.resource = ContentPage.get({id: $stateParams.id}).$promise
$scope.resource.$save() // Works
$scope.resource.$update() // Works
$scope.resource.$copy() // Works
$scope.resource.$copies() // Does not work!

Angular Resource正在尝试用一系列项目覆盖我的初始资源。但是Resource实例push当然没有方法。


问题答案:

我找到了答案:

假定资源在其整个生命周期中都代表匹配的数据对象。如果要获取新数据,则应使用新对象。

$scope.copies = ContentPage.copies()


 类似资料:
  • 获取类型错误,但使用onClick={()=

  • 跟踪这个问题的问题无法解决我的问题。 reactjs给出错误未捕获类型错误:超级表达式必须为空或函数,而不是未定义 我的反应版本是"^15.3.1"。 我添加了下面的代码片段

  • 问题内容: 我是jQuery的新手,并在旧的教程上使用了以下代码段: 但是我得到这个错误 未捕获的TypeError:$ .ajax(…)。成功不是函数 在 我想知道这里有什么问题吗? 问题答案: 对ajax的调用应如下所示: 您没有方法链接成功函数,它是字典参数中的条目之一。

  • 不知何故,我无法正确使用slick carousel(http://kenwheeler.github.io/slick/)。 我得到以下错误: 我正在javascript文件中运行以下代码: 我已经在Bower中包含了最新的jQuery版本(2.1.4)。我还尝试在布局模板文件的头部包含jQuery CDN,但这也没有解决任何问题。 唯一奇怪的是,当我不使用函数来调用滑块时,它确实起作用,但它给

  • 我有一个脚本给了我以下错误:“TypeError:clickables[ic]未定义”,当我用Firebug/在浏览器控制台中检查它时。我是一名javascript初学者,正在尝试学习如何使用vanilla javascript进行操作,因此我正在专门寻找一种解决方案。 问题是:如何消除/消除未定义的TypeError? 我使用它来显示隐藏的元素,其显示属性设置为无。脚本应该获取文档中特定类的所有

  • 问题内容: 在Scala Play中使用AngularJS时,出现此错误。 错误:参数“ MainCtrl”不是函数,未定义 我正在尝试创建包含一周中各天的表格。 请看一下我的代码。我检查了控制器的名称,但这似乎是正确的。注意:此SO答案中使用的代码 index.scala.html MainCtrl.js 问题答案: 从模块名称([myApp])中删除 并添加到html,它应该可以工作。