Angularjs 路由器解析异常
为什么在使用$httpBackend时会出现get I following错误 这是我遇到的模拟服务:Angularjs 路由器解析异常,angularjs,angular-ui-router,httpbackend,Angularjs,Angular Ui Router,Httpbackend,为什么在使用$httpBackend时会出现get I following错误 这是我遇到的模拟服务: $httpBackend.whenGET(editingRegex).respond(function (method, url) { var parameters = url.split('/'); var length = parameters.length; var id = parseInt(parameters[length
$httpBackend.whenGET(editingRegex).respond(function (method, url) {
var parameters = url.split('/');
var length = parameters.length;
var id = parseInt(parameters[length - 1]);
var product = id > 0 ? products.filter(function (elem) {
if (elem.productId === id) {
return elem
}
}) : {'productId': 0};
return [200, product, {}]
});
这是我的ui路由代码
$stateProvider.state('productDetail', {
url: '/products/:productId',
templateUrl: 'app/products/productDetail.html',
controller: 'ProductDetailController as vm',
resolve: {
productResource: 'productResource',
product: function (productResource, $stateParams) {
var productId = $stateParams.productId;
return productResource.get({productId: productId}).$promise;
}
}
});
这是我得到的一个例外:
productResource就是这样
function productResource($resource) {
return $resource('/api/products/:productId');
};
错误:[$resource:badcfg]操作的资源配置中出现错误
获取
。预期响应包含对象,但获得数组
(请求:GET/api/products/3)
.filters()
发回数组而不是对象。这是我的违规行为 .filters()
发回数组而不是对象。这是我的违规行为 您的服务应该返回一个对象,而不是数组。产品是一个对象。httpbackend将事物打包为数组当您在$resource
上调用get
时,结果应该是一个对象。要检查的显而易见的事情是返回的内容:products.filter(function(elem){…})
。它可能返回一个与过滤器匹配的对象数组。您可能希望它只是一个对象,但它可能是一个包含一个对象的数组。但我不希望它返回一个数组。我想获取一个对象。您的服务应该返回一个对象,而不是数组。产品是一个对象。httpbackend将事物打包为数组当您在$resource
上调用get
时,结果应该是一个对象。要检查的显而易见的事情是返回的内容:products.filter(function(elem){…})
。它可能返回一个与过滤器匹配的对象数组。您可能希望它只是一个对象,但它可能是一个包含一个对象的数组。但我不希望它返回一个数组,我希望得到一个对象。