在angularjs中将参数发送到控制器

时间:2017-04-12 17:03:09

标签: angularjs

我建立一个eshop网站看起来像这样: enter image description here

我加载了所有产品,当我将鼠标悬停在产品名称上时,我会看到由产品ID生成的动态网址

enter image description here

到目前为止,问题是我已经对产品详细信息页面进行了硬编码。

我想知道的是如何将参数发送到控制器,以便我可以根据产品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
    }); 

然后我根据收到的参数加载所有信息。
知道怎么做吗?这种方法是正确的吗?或者我该怎么办?
谢谢

2 个答案:

答案 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/