ors*_*zky 30 javascript angularjs angular-resource
我需要从其他API获取数据,其中产品ID是url的一部分(而不是查询参数).
工厂:
.factory('Products', ['$resource',
function($resource) {
return $resource('products/:productId', {
productId: '@id'
}, {
query: {
isArray: false
},
update: {
method: 'PUT'
}
});
}
])
Run Code Online (Sandbox Code Playgroud)
控制器:
$scope.getProduct = function(id, from) {
$scope.product = Products.get({ id: id }, function(){
console.log($scope.product);
});
}
Run Code Online (Sandbox Code Playgroud)
我的网址构造如下:
/products?id=5426ced88b49d2e402402205
Run Code Online (Sandbox Code Playgroud)
代替:
/products/5426ced88b49d2e402402205
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
Sun*_* D. 57
当您Products.get()在控制器中调用时,您没有使用正确的参数名称(您需要根据您的定义使用"productId"而不是"id" $resource).尝试这样称呼它:
Products.get({ productId: id })
Run Code Online (Sandbox Code Playgroud)
以下是文档中的$resource一个片段,解释了它的工作原理:
如果存在,则首先将参数对象中的每个键值绑定到url模板,然后在?之后将任何多余的键附加到url搜索查询.
在您的情况下,它没有在URL中找到"id"作为参数,因此它将其添加到查询字符串中.