2017-04-12 69 views
0

控制器我建立一個網上商店網站看起來是這樣的: enter image description here發送參數在angularjs

我加載的所有產品,當我將鼠標懸停在產品名稱我看到產品的ID設置爲動態URL

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 
    }); 

然後我加載所有基於我收到的參數的信息。
任何想法如何做到這一點?這種方法是正確的嗎?或者我該怎麼做?
感謝

+0

你的HTML在哪裏?這是ID硬編碼的地方嗎? –

+0

@RaniRadcliff硬編碼部分是id,我把1作爲productId –

+0

目前有多少工作?當您單擊超鏈接時,視圖會更改並顯示正確的內容? –

回答

0

好,說不上多麼但我一直在尋找的是: $ routeProvider,我解決了我的問題

var test = shopFactory.ProductDetail.get({ id: $routeParams.producId }).$promise.then(function (response) { 
    CODE HERE 
}); 

基本上我得到了id參數f rom的URL,並加載插入它的ID,這是我想要的,一個非常好的文章解釋它:https://namitamalik.github.io/routeParams-in-AngularJS/

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 
    }); 
} 
+0

謝謝,但我找到了另一種方式,我認爲這是正確的方式,如果我沒有找到它,我會使用你的。 –