angularjs を使用してオンライン ストアを構築していますが、details.html にリンクして特定のアイテムの詳細を表示する方法を理解するのに苦労しています。現在、[もっと見る] ボタンの URL をクリックすると、アイテムの名前が表示されます。表示させる唯一の方法は、#/details/:{{item.name}} のようなリンクを作成することです。私がオンラインで読んだことはすべて #/details/:name でなければならないと言っていますが、例として details/:Macbook Pro ではなく :name を URL に返します。正しい方法で行うと、ホームページにリダイレクトされます。これまでの私のコードは次のとおりです。
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;
};
}]);
computer.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>
繰り返しますが、アイテム名を URL に表示する唯一の方法は、URL に角かっこを含めることですが、それが間違っていることはわかっています。どんな助けでも大歓迎です。