项目详细信息页面使用angularjs $ routeParams

时间:2016-07-04 08:58:15

标签: angularjs routeparams

我正在建立一个带有angularjs的在线商店,我很难弄清楚如何链接到details.html并让它显示具体的项目细节。目前,当我点击视图时,更多按钮url将显示该项目的名称。我可以让它显示的唯一方法是创建一个这样的链接:#/ details /:{{item.name}}。我在网上看到的一切都说它应该是#/ details /:name但是返回:url中的名称而不是detail /:Macbook Pro作为示例。如果我以正确的方式重新定向回主页。到目前为止,这是我的代码。

app.js

var myApp = angular.module('app', ['ngRoute']);
myApp.config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider) {
        $routeProvider.
        when('/home',{
            templateUrl: 'partials/home.html',
            controller: "storeCtrl"
        }).
        when('/about',{
            templateUrl: 'partials/about.html',
            controller: "storeCtrl"
        }).
        when('/computers',{
            templateUrl: 'partials/computers.html',
            controller: "storeCtrl"
        }).
        when('/smartphones',{
            templateUrl: 'partials/smartphones.html',
            controller: "storeCtrl"
        }).
        when('/tablets',{
            templateUrl: 'partials/tablets.html',
            controller: "storeCtrl"
        }).
        when('/details/:{{item.name}}',{
            templateUrl: 'partials/details.html',
            controller: "storeCtrl"
        }).

        otherwise({
            redirectTo: '/home'             
        });
    }]);

myApp.controller('storeCtrl', ['$scope', '$http', '$routeParams',  function($scope, $http, $routeParams) {


$scope.homeHeading = 'All Products';
$scope.aboutHeading = 'About Us';
$scope.computersHeading = 'Computers';
$scope.smartphonesHeading = 'Smartphones';
$scope.tabletsHeading = 'Tablets';

$http.get('js/products.json').then(function(result) {
    $scope.products = result.data;


});

$scope.minusOne = function(index) { 
    $scope.products[index].dislikes += 1; 
};
$scope.plusOne = function(index) { 
    $scope.products[index].likes += 1; 
};





}]);  

computers.html

<div>
<h1>{{computersHeading}}</h1>

<div class="product col-md-4" ng-repeat="item in products | filter:search   | filter:'Laptop'">
<img ng-src="{{ item.cover }}" >
<h3>{{ item.name }}</h3>
<p class="price">{{ item.price }}</p>
<p class=""> <b>Storage</b>: {{ item.specs.storage }}</p>
<p> <b>Memory</b>: {{ item.specs.memory }}</p>

<!----- Save ratings for details page 
<div class="rating">
    <p class="likes" ng-click="plusOne($index)">
    <i class="fa fa-thumbs-up"></i>
    {{ item.likes }} </p>
    <p class="dislikes" ng-click="minusOne($index)"><i class="fa fa-thumbs-down"></i> {{ item.dislikes }} </p>

</div> -->
<a href="#/details/:{{item.name}}" class="btn btn-custom"> View Product</a>

</div>

</div>

再次获取项目名称在网址中显示的唯一方法是在网址中包含括号,我知道这是不正确的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我想通了,我需要为详细信息页面制作一个控制器,然后获取json数据。然后我将我的href链接更改为

<a href="#/details/{{products.indexOf(item)}}" class="btn btn-custom"> View Product</a>