Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 角度资源,未定义json文档中的数组_Javascript_Json_Angularjs - Fatal编程技术网

Javascript 角度资源,未定义json文档中的数组

Javascript 角度资源,未定义json文档中的数组,javascript,json,angularjs,Javascript,Json,Angularjs,我对angular非常陌生,我不理解为什么资源不能按预期工作。当我使用$http.get()请求时,我可以将其分配给变量“data”,并使用data.key获取值。这似乎不适用于我当前的资源设置,我收到一个错误,上面写着“TypeError:无法读取未定义的属性“0”,这以前不是问题 myAppServices.factory('Apprentice',['$resource', function($resource){ return $resource('javascripts/:appr

我对angular非常陌生,我不理解为什么资源不能按预期工作。当我使用$http.get()请求时,我可以将其分配给变量“data”,并使用data.key获取值。这似乎不适用于我当前的资源设置,我收到一个错误,上面写着“TypeError:无法读取未定义的属性“0”,这以前不是问题

myAppServices.factory('Apprentice',['$resource', function($resource){
  return $resource('javascripts/:apprenticeId/.json', {} ,{
    query: { method:'GET', params : {apprenticeId : 'apprentices'}, isArray:true}
  });
}]);
还有控制器

myAppControllers.controller('apprenticeCtrl',['$scope', 'Apprentice',
    function($scope, Apprentice) {

        var data = Apprentice.query();
        $scope.mainImageUrl = data.images[0];
        var index = data.images.indexOf($scope.mainImageUrl);

        $scope.setImage = function() {
          (index == data.images.length - 1) ? index= 0 : index++;

          $scope.mainImageUrl = data.images[index];
      };
  }]);

我以前从未使用过
$resource
,但根据您的经验,您可以这样使用它。

不确定它是否相同。Console告诉我我没有“then”方法是的,既然他的工厂是使用$http创建的,而我的工厂使用$resource创建的,那么情况会有所不同吗?@NoobException你是对的;这不是一个重复的问题。我相信resource会接受在请求完成时执行的函数,如我的回答中所示。您关于正确使用的看法是正确的,就像我以前使用的方式一样,绑定没有进行评估,但它可能与未定义的绑定有关。对于您的解决方案,来自其他控制器的绑定将进行计算,但这里仍然没有定义数组。
myAppControllers.controller('apprenticeCtrl',['$scope', 'Apprentice',
  function($scope, Apprentice) {

    var index;
    var data = Apprentice.query(function () {
      $scope.mainImageUrl = data.images[0];
      index = data.images.indexOf($scope.mainImageUrl);
    });

    $scope.setImage = function() {
      (index == data.images.length - 1) ? index= 0 : index++;

      $scope.mainImageUrl = data.images[index];
    };
}]);