尝试轮询copiesAngularJS资源上的自定义方法时,我在处收到以下错误angular.js:10033:(该方法copy工作正常。)
copies
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()引发上面的错误。
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当然没有方法。
push
我找到了答案:
假定资源在其整个生命周期中都代表匹配的数据对象。如果要获取新数据,则应使用新对象。
$scope.copies = ContentPage.copies()