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