我加载了所有产品,当我将鼠标悬停在产品名称上时,我会看到由产品ID生成的动态网址
到目前为止,问题是我已经对产品详细信息页面进行了硬编码。
我想知道的是如何将参数发送到控制器,以便我可以根据产品ID加载页面:
app.factory("shopFactory", function ($resource) {
return {
User: $resource("http://localhost:58495/users/api/User/?id=:id", { id: "@id" }),
Category: $resource("http://localhost:58495/category/api/categories"),
Product: $resource("http://localhost:58495/products/api/Products?from=:from&to=:to", { from: "@from", to: "@to" }),
ProductDetail: $resource("http://localhost:58495/products/api/Products?id=:id", { id: "@id" }),
Test: $resource("https://jsonplaceholder.typicode.com/users/:id", {id:"@id"})
};
});
我的工厂看起来像那样,我的产品控制器:
app.controller("productCtrl", function ($scope, shopFactory) {
var test = shopFactory.ProductDetail.get({ id: 1 }).$promise.then(function (response) {
CODE HERE
});
});
我不知道如何但我想向控制器发送一个参数,该参数是我想看到的产品的id,控制器接收该id作为参数并将其插入此处:
var test = shopFactory.ProductDetail.get({ id: **hardCoded Part** }).$promise.then(function (response) {
CODE HERE
});
然后我根据收到的参数加载所有信息。
知道怎么做吗?这种方法是正确的吗?或者我该怎么办?
谢谢
答案 0 :(得分:0)
我认为您尝试做的事情是这样的:
<a ng-click="productCtrl.showDetails(product.id)>{{product.name}}</a>
然后在控制器中
$scope.showDetails = function(productId) {
shopFactory.ProductDetail.get({ id: productId }).$promise.then(function
(response) {
CODE HERE
});
}
答案 1 :(得分:0)
好吧,不知道怎么样,但我正在寻找的是:$ routeProvider,我解决了我的问题
var test = shopFactory.ProductDetail.get({ id: $routeParams.producId }).$promise.then(function (response) {
CODE HERE
});
基本上我从url获取id参数,并将其加载到id中,这就是我想要的,这是一篇非常好的文章解释它:https://namitamalik.github.io/routeParams-in-AngularJS/