2016-05-31 9 views
0

Я хочу, когда пользователь нажимает на кого-то пользователя, отображает новое представление для этой информации. У меня есть два элемента управления: сначала получите список пользователей, и он работает нормально, но второй контроллер имеет функцию, которая представляет собой параметр hava param для пользователя id, но они показывают пустую страницу. Я не знаю, как отредактировать представление из второго метода контроллера. Это мой код:Перенаправление на другое представление с помощью метода контроллера и routh

<html> 
 
    
 
    <head> 
 
     <title>Angular JS Views</title> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular-route.js"></script> 
 
    </head> 
 
    
 
    <body> 
 
    <h2>AngularJS Sample Application</h2> 
 
     <div ng-app = "app"> 
 
     <p><a href = "#viewStudents">view Students</a></p> 
 
     <p><a href = "#viewStudent">View Student</a></p> 
 
     <div ng-view></div> 
 
      
 
     <script type = "text/ng-template" id = "viewStudents.htm"> 
 
      <ul ng-repeat="entry in pacijenti"> 
 
    <li>{{ entry.ime }}</li> 
 
    <li>{{entry.prezime}}</li> 
 
    <li>{{entry.jmbg}}</li> 
 
    <button type="button" ng-click="getP(entry.jmbg)" > 
 
    </button> 
 
<a ng-href='#viewStudent' ng-click="myCtrl.getP(entry.jmbg)" >click me</a> 
 
</ul> 
 
     </script> 
 
      
 
     <script type = "text/ng-template" id = "viewStudent.htm"> 
 
      <ul ng-repeat="entry2 in pac"> 
 
     
 
    <li>{{entry2.dijagnoza}}</li> 
 
    <li>{{entry2.bolest}}</li> 
 

 
     
 
    <a href="pocetna">link1</a> 
 
</ul> 
 
     </script> 
 
     </div> 
 

 
     
 
     <script> 
 
     var app = angular.module("app", ['ngRoute']); 
 
      
 
     app.config(['$routeProvider', function($routeProvider) { 
 
      $routeProvider. 
 
       
 
      when('/viewStudents', { 
 
       templateUrl: 'viewStudents.htm', 
 
       controller: 'HomeController' 
 
      }). 
 
       
 
      when('/viewStudent', { 
 
       templateUrl: 'viewStudent.htm', 
 
       controller: 'myCtrl' 
 
      }). 
 
       
 
      otherwise({ 
 
       redirectTo: '/viewsStudents' 
 
      }); 
 
      }]); 
 
      
 
      
 
     app.factory('photos', ['$http', function($http) { 
 
     \t return $http.get("http://localhost:8080/mavenproject2/fizijatar/12345/pacijenti") 
 
     \t   .success(function(response) { 
 
     \t   return response; 
 
     \t   }) 
 
     \t   .error(function(response) { 
 
     \t   return response; 
 
     \t   }); 
 
     \t }]); 
 
     app.controller('HomeController', ['$scope', 'photos', function($scope, photos) { 
 
     \t $scope.pacijenti=this; 
 
     \t 
 
     \t photos.success(function(response) { 
 
     \t  $scope.pacijenti =response; 
 
     \t }); 
 
     \t 
 
     }]); 
 
      
 
     app.controller('myCtrl', function($scope, $http) { 
 
     \t $scope.pac=this; 
 
     
 
     \t $scope.getP=function(jmbg){ 
 
     \t \t $http.get("http://localhost:8080/mavenproject2/fizijatar/12345/pacijenti/"+jmbg+"/pregledi") 
 
     \t \t .then(function(response) { 
 
     \t \t  $scope.pac = response.data; 
 
     \t \t }, function(response) { 
 
     \t \t  $scope.pac = "Something went wrong"; 
 
     \t \t }); 
 
     \t \t 
 
     \t 
 
     \t \t 
 
     \t \t 
 
     \t \t 
 
     \t }; 
 
     }); 
 
     \t 
 

 

 
      
 
     
 
      
 
     
 
     </script> 
 
     
 
    </body> 
 
</html>

ответ

0

Изменить маршрут принять jmbg ID:

app.config(['$routeProvider', function($routeProvider) { 
      $routeProvider. 

      when('/viewStudents', { 
       templateUrl: 'viewStudents.htm', 
       controller: 'HomeController' 
      }). 

      when('/viewStudent/:jmbg', { 
       templateUrl: 'viewStudent.htm', 
       controller: 'myCtrl' 
      }). 

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

Затем в контроллере, извлечь jmbg идентификатор:

app.controller('myCtrl', function($scope, $http, $routeParams) { 
      $scope.pac = this; 
      $scope.jmbg = $routeParams.jmbg; 

       $scope.getP = function(jmbg){ 
        $http.get("http://localhost:8080/mavenproject2/fizijatar/12345/pacijenti/"+jmbg+"/pregledi") 
        .then(function(response) { 
         $scope.pac = response.data; 
        }, function(response) { 
         $scope.pac = "Something went wrong"; 
        }); 

      // Call the getP function with the jmbg id 
      $scope.getP($scope.jmbg); 

       }; 
     }); 

Ссылка, чтобы открыть вид студента будет выглядеть следующим образом:

<a ng-href="#viewStudent/{{entry.jmbg}}">click me</a> 

Вот рабочий plunker пример: https://plnkr.co/edit/99aDJkuvIDopNoILNFGB?p=preview - Пожалуйста, обратите внимание, что я удалил использование фабрики фото, и вместо того, чтобы жестко закодированные данные примера.

+0

Да, она перенаправляет меня на страницу с помощью jmbg, но пока не показывает информацию об ученике. –

+0

См. Рабочий пример –

+0

Теперь работа прекрасна, tnx !!! –