Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-Factory.function(…)未定义_Javascript_Json_Angularjs - Fatal编程技术网

Javascript AngularJS-Factory.function(…)未定义

Javascript AngularJS-Factory.function(…)未定义,javascript,json,angularjs,Javascript,Json,Angularjs,我想首先说我对AngularJS很陌生,所以任何帮助都将不胜感激 我试图从工厂函数中的URL收集一些JSON数据,然后将数据返回给控制器,但它抛出一个错误,表示该函数不存在。我一直在关注Udemy的一系列教程,但我收集的数据来自不同的来源,所以答案不在视频中 代码: 错误: Error: ItemsFactory.getItems(...) is undefined @http://192.168.1.234:1000/js/angular-module.js:11:2 invoke@http:

我想首先说我对AngularJS很陌生,所以任何帮助都将不胜感激

我试图从工厂函数中的URL收集一些JSON数据,然后将数据返回给控制器,但它抛出一个错误,表示该函数不存在。我一直在关注Udemy的一系列教程,但我收集的数据来自不同的来源,所以答案不在视频中

代码:

错误:

Error: ItemsFactory.getItems(...) is undefined
@http://192.168.1.234:1000/js/angular-module.js:11:2
invoke@http://192.168.1.234:1000/js/angular.js:3965:14
instantiate@http://192.168.1.234:1000/js/angular.js:3976:23
$ControllerProvider/this.$get</<@http://192.168.1.234:1000/js/angular.js:7307:18
nodeLinkFn/<@http://192.168.1.234:1000/js/angular.js:6696:34
forEach@http://192.168.1.234:1000/js/angular.js:332:11
nodeLinkFn@http://192.168.1.234:1000/js/angular.js:6683:11
compositeLinkFn@http://192.168.1.234:1000/js/angular.js:6131:13
publicLinkFn@http://192.168.1.234:1000/js/angular.js:6027:30
ngViewFillContentFactory/<.link@http://192.168.1.234:1000/js/angular-route.js:915:7
nodeLinkFn@http://192.168.1.234:1000/js/angular.js:6737:13
compositeLinkFn@http://192.168.1.234:1000/js/angular.js:6131:13
publicLinkFn@http://192.168.1.234:1000/js/angular.js:6027:30
createBoundTranscludeFn/boundTranscludeFn@http://192.168.1.234:1000/js/angular.js:6151:21
controllersBoundTransclude@http://192.168.1.234:1000/js/angular.js:6758:18
update@http://192.168.1.234:1000/js/angular-route.js:865:25
$RootScopeProvider/this.$get</Scope.prototype.$broadcast@http://192.168.1.234:1000/js/angular.js:13070:15
updateRoute/<@http://192.168.1.234:1000/js/angular-route.js:547:15
qFactory/defer/deferred.promise.then/wrappedCallback@http://192.168.1.234:1000/js/angular.js:11659:31
qFactory/defer/deferred.promise.then/wrappedCallback@http://192.168.1.234:1000/js/angular.js:11659:31
qFactory/ref/<.then/<@http://192.168.1.234:1000/js/angular.js:11745:26
$RootScopeProvider/this.$get</Scope.prototype.$eval@http://192.168.1.234:1000/js/angular.js:12788:16
$RootScopeProvider/this.$get</Scope.prototype.$digest@http://192.168.1.234:1000/js/angular.js:12600:15
$RootScopeProvider/this.$get</Scope.prototype.$apply@http://192.168.1.234:1000/js/angular.js:12892:13
done@http://192.168.1.234:1000/js/angular.js:8427:34
completeRequest@http://192.168.1.234:1000/js/angular.js:8641:7
createHttpBackend/</xhr.onreadystatechange@http://192.168.1.234:1000/js/angular.js:8580:1

<div class="ng-scope" ng-view="">

提前谢谢你,马特

我的问题与此类似,我通过像这样注入我的工厂来解决它-

angular.module('MainModule').controller('ItemsController', ['ItemsFactory', function($scope, ItemsFactory, MainSettings){
    ItemsFactory.getItems()
    .success(function(response) {..})
    .error(function(response) {..})
    .then(function(response){
        $scope.items = response;
    });
    $scope.settings = MainSettings;
}]);

如果您决定使用缩小库或RequireJS,您最终会这样做。有关详细信息,请参阅官方文档。

这两个修复程序分别或一起删除了错误,但数据仍然没有返回。注入在控制器中列出的顺序是否会对它们的工作方式产生任何影响?

您的函数factory.getItems不返回任何内容,您只需返回$http-like-factory.getItems=函数{return$http.get'/index.php'。successfunctionresponse{items=response.items;返回项;};};您可以更新您的帖子,而不是添加非答案。还有,您的意思是,数据仍然没有返回?错误已被删除,但我期望返回的JSON数据在控制器中仍然不可用。请使用您的更改更新您的帖子。是否尝试调试它?是否尝试确认$http请求是否已收到是否返回正确的结果?是否可以记录它的返回?是的,$http请求在我记录时返回工厂内的正确数据,只是在控制器内调用函数时没有返回。
angular.module('MainModule').controller('ItemsController', ['ItemsFactory', function($scope, ItemsFactory, MainSettings){
    ItemsFactory.getItems()
    .success(function(response) {..})
    .error(function(response) {..})
    .then(function(response){
        $scope.items = response;
    });
    $scope.settings = MainSettings;
}]);