URLの製品ID部分を使用して(クエリパラメーターとしてではなく)REST APIからデータを取得する必要があります。
工場:
.factory('Products', ['$resource',
function($resource) {
return $resource('products/:productId', {
productId: '@id'
}, {
query: {
isArray: false
},
update: {
method: 'PUT'
}
});
}
])
コントローラー:
$scope.getProduct = function(id, from) {
$scope.product = Products.get({ id: id }, function(){
console.log($scope.product);
});
}
私のURLは次のように構築されています:
/products?id=5426ced88b49d2e402402205
の代わりに:
/products/5426ced88b49d2e402402205
なぜアイデアがありますか?
コントローラーでProducts.get()
を呼び出すとき、正しいパラメーター名を使用していません($resource
の定義に基づいて、「id」の代わりに「productId」を使用する必要があります)。代わりに次のように呼び出してみてください。
Products.get({ productId: id })
$resource
のドキュメント からの抜粋は次のとおりです。
パラメータオブジェクトの各キー値は、存在する場合は最初にurlテンプレートにバインドされ、次に余分なキーが?の後にURL検索クエリに追加されます。
あなたの場合、URLのパラメーターとして「id」が見つからないため、それをクエリ文字列に追加します。