Angular JS Passing Parameters to URL in UI-Router

Getting Started

I've used CDN for Bootstrap, Angular JS and UI-Router so you need internet connection for them to work.

Creating our Database

First we are going to create our database and insert data. 1. Open phpMyAdmin. 2. Click databases, create a database and name it as angular. 3. After creating a database, click the SQL and paste the below codes. See image below for detailed instruction.
  1. CREATE TABLE `members` (
  2. `memid` int(11) NOT NULL,
  3. `firstname` varchar(30) NOT NULL AUTO_INCREMENT,
  4. `lastname` varchar(30) NOT NULL,
  5. PRIMARY KEY(`memid`)
  1. INSERT INTO `members` (`memid`, `firstname`, `lastname`) VALUES
  2. (1, 'Neovic', 'Devierte'),
  3. (2, 'Gemalyn', 'Cepe'),
  4. (3, 'Julyn', 'Divinagracia'),
  5. (4, 'Tintin', 'Demapanag');
database sql

index.html

This is the main view of our app.
  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <meta charset="utf-8">
  4. <title>Angular JS Passing Parameters to URL in UI-Router</title>
  5. <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  6. <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
  7. <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
  8. </head>
  9. <div class="container">
  10. <div ui-view></div>
  11. </div>
  12. <script src="app.js"></script>
  13. </body>
  14. </html>

app.js

This is our main angular js script.
  1. var app = angular.module('app', ['ui.router']);
  2.  
  3. app.config(function($stateProvider, $urlRouterProvider) {
  4.  
  5. $urlRouterProvider.otherwise('/home');
  6.  
  7. $stateProvider
  8.  
  9. .state('home', {
  10. url: '/home',
  11. templateUrl: 'home.html',
  12. controller: 'homeCtrl'
  13. })
  14.  
  15. //dis is our state where we put our id in url
  16. .state('view', {
  17. url: '/view/{member:json}',
  18. params: {member: null},
  19. templateUrl: 'view.html',
  20. controller: 'viewCtrl'
  21. })
  22.  
  23. });
  24.  
  25. app.factory('memberService', function($http){
  26. return{
  27. fetchAllMember: function(){
  28. var members = $http.get('members.php');
  29. return members;
  30. }
  31. }
  32. });
  33.  
  34. app.controller('homeCtrl', ['$scope', '$state', 'memberService', function($scope, $state, memberService) {
  35. var allmembers = memberService.fetchAllMember();
  36. allmembers.then(function(response){
  37. $scope.members = response.data;
  38. });
  39.  
  40. $scope.viewMember = function(member){
  41. $state.go('view', {member:member});
  42. }
  43. }]);
  44.  
  45. app.controller('viewCtrl', function($scope, $stateParams) {
  46. $scope.details = $stateParams.member;
  47. });

home.html

Per our router, this can be treated as our index view.
  1. <h1 class="page-header text-center">Member Table</h1>
  2. <div class="col-sm-8 col-sm-offset-2">
  3. <table class="table table-bordered table-striped">
  4. <tr>
  5. <th>Member ID</th>
  6. <th>Firstname</th>
  7. <th>Lastname</th>
  8. <th>View Member</th>
  9. </tr>
  10. </thead>
  11. <tr ng-repeat="member in members">
  12. <td>{{ member.memid }}</td>
  13. <td>{{ member.firstname }}</td>
  14. <td>{{ member.lastname }}</td>
  15. <td>
  16. <!-- using controller -->
  17. <button type="button" ng-click="viewMember(member)" class="btn btn-primary">Using controller</button>
  18. <!-- using ui-sref -->
  19. <button type="button" class="btn btn-primary" ui-sref="view({member: member})">Using ui-sref</button>
  20. </td>
  21. </tr>
  22. </tbody>
  23. </table>
  24.  
  25. </tbody>
  26. </div>

view.html

This is the view where we show the object that we sent as parameters in url.
  1. <h1 class="page-header text-center">Member Details</h1>
  2. <div class="col-sm-4 col-sm-offset-4">
  3. <h3>Member ID: {{ details.memid }}</h3>
  4. <h3>Firstname: {{ details.firstname }}</h3>
  5. <h3>Lastname: {{ details.lastname }}</h3>
  6. <button type="button" ui-sref="home" class="btn btn-primary">Home</button>

members.php

This is our PHP api that fetches data from our MySQL database.
  1. <?php
  2. $conn = new mysqli("localhost", "root", "", "angular");
  3.  
  4. $output = array();
  5. $sql = "SELECT * FROM members";
  6. $query=$conn->query($sql);
  7. while($row=$query->fetch_array()){
  8. $output[] = $row;
  9. }
  10.  
  11. echo json_encode($output);
  12. ?>
That ends this tutorial. Happy Coding :)

Add new comment