在角度 UI 路由器中单击时重定向到相应的单个产品页面

Posted

技术标签:

【中文标题】在角度 UI 路由器中单击时重定向到相应的单个产品页面【英文标题】:Redirect to a respective single product page on click in angular UI router 【发布时间】:2017-01-09 05:50:15 【问题描述】:

在我的主页中,如果我单击特定产品图像,我现在将获取从 JSON 获取的所有产品,它应该重定向到单独显示相应产品的另一个页面。我知道应该在 singleproductcontroller 进行更改,但我不知道如何。这是我的json链接 JSon link

<html>
<head>
<title>Fad Street Den</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css">
 <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.0-alpha.4/angular-ui-router.js"></script>
<body cz-shortcut-listen="true">
<div>
name
<div ui-view="header"></div>
<div ui-view="content"></div>
</div>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="controller.js"></script>
<script type="text/javascript" src="services.js"></script>
</body>
</html>

App.js 文件

   var app=angular.module('myApp', ['ui.router']);
   app.config(function($stateProvider,$urlRouterProvider)
   
   $stateProvider
   .state('home',
   
    url:'/',
    views:
   
    'header':
    
        templateUrl:"header.html"
    ,
    'content':
    
        templateUrl:"body.html",
        controller:"productscontroller"
    
    
   )
   .state('home.product',
   
    url:'products/:id',
    views:
   
    'content@':
    
        templateUrl:"product.html",
        controller:"singleproductcontroller"
    
    
   )
   $urlRouterProvider.otherwise('/');   
   )

控制器.JS

 var app=angular.module('myApp');
 app.controller('productscontroller',    ['$scope','productservice',function($scope,productservice)
 
    $scope.name="kannan";
   productservice.productlists().then(function(response)
    
    $scope.ans=response.data;
    console.log($scope.ans);
   ,function(response)
    
    console.log(response.status);
    return response.status;
   );
   ]);
   app.controller('singleproductcontroller',  ['$scope','$stateParams','productservice',function($scope,$stateParams,productse rvice)
   
    productservice.productlists().then(function(response)
   
     console.log($stateParams.id);
    var id=$stateParams.id;
    $scope.fullproducts=response.data;
    console.log($scope.fullproducts=response.data[$stateParams.id])
    $scope.products=$scope.fullproducts[$stateParams.id]
    console.log($scope.products);
    ,function(response)
    
    console.log(response.status);
    return response.status;
    );
    ])

标题.HTML

   <body ng-app="myApp" ng-controller="productscontroller">
   <ul class="nav navbar-nav">
   <li class="active"><a ui-sref="home">Home</a></li>
   <li><a ui-sref="home">Home</a></li>
   </ul>
  </body>

正文.html

 <body ng-app="myApp" ng-controller="productscontroller">
 <div>
 <div style="height: 200px;" ng-repeat="x in ans">
 <img style="width: 100px;height: 100px;float: left;" class="img-responsive"  
     ng-src="x.imageURL1">
    <h1>x.color</h1>
    <p>x.brand</p>
    <p>x.gender</p>
  </div>
  </div>
 </body>

产品.html

 <body ng-controller="singleproductcontroller">
    <div>
    <div style="height: 200px;">
        <img style="width: 100px;height: 100px;float: left;" class="img-responsive"  ng-src="x.imageURL1">
        <h1>products.color</h1>
        <p>products.brand</p>
        <p>products.gender</p>
      </div>
    </div>
  </body>

【问题讨论】:

【参考方案1】:

您应该将 ui-sref 指令添加到图像中。它将带您进入产品状态。是这样的:

<div ng-repeat="x in ans">
    <a ui-sref="home.product(id: x.id)"><img ></a>
<div>

【讨论】:

是的,伙计,我纠正了这一点,但我如何才能从服务(来自 JSON)中单独获取该特定 ID。这是我的服务 app.service('productservice', function($http) this.productlists=function(index) return $http.get("api.myjson.com/bins/5a403/:prodcutId") .success(function(data) return data; ) .error(function(data) return data; ); ); 你能写调用函数吗?我将通过 routeparams 获取特定 ID 我想知道如何获取该特定 ID 详细信息

以上是关于在角度 UI 路由器中单击时重定向到相应的单个产品页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Fullcalendar单击年份视图的相应月份单元格时重定向到月视图

角度的ag-grid中的单元格渲染问题

单击按钮时重定向到另一个页面-> Javascript

Laravel 在区域设置更改时重定向到路由

当用户在 JSF 中注销后单击后退按钮时重定向到登录页面 [重复]

如何在mvc中单击按钮时重定向到另一个页面和特定的div