2016-06-01 5 views
0

Я учусь Угловое, так вот мой TestApp: http://enrolin.in/test/#/studentsAngularJS не маршрутизации правильно

Теперь здесь я хочу найти в базе данных по названию. Поэтому я создал php, который возвращает именно то, что мне нужно. Вот php: http://enrolin.in/test/login.php?p=fetchbyname&&name=ak Вы должны заменить имя в URL-адресе на все, что нужно для поиска. Я также создал частичную страницу, которая возвращает абсолютно правильные результаты, вот страница: http://enrolin.in/test/#/studentSearch/ak Все было хорошо до сих пор Но вот проблема:

Когда я пытаюсь искать в http://enrolin.in/test/#/students, angularJS не направляет меня к чему-то вроде http://enrolin.in/test/#/studentSearch/ak но вместо того, чтобы по умолчанию, который я задал в $ routeProvider

Вот мои angularJS (я удалил некоторые маловажную код):

поставщик маршрута:

.config(function ($routeProvider) { 
     $routeProvider 


      .when("/students/:id", { 
       templateUrl: "templates/studentDetails.html", 
       controller: "studentDetailsController" 
      }) 
      .when("/studentSearch/:name", { 
       templateUrl: "templates/studentSearch.html", 
       controller: "studentSearchController" 
      }) 
      .otherwise({ 
       redirectTo: "/home" 
      }) 

    }) 

Контроллер, который проходит по ссылке:

.controller("studentsController", function ($scope, $http, $route,$location) { 
     $scope.searchStudent=function(){ 
      if($scope.name){ 
       $location.url("/studentsSearch/" + $scope.name); 
      } 
      else{ 
       $location.url("/studentsSearch/"); 
      } 
     } 

     $scope.reloadData=function(){ 
      $route.reload(); 
     } 
     $http.get("http://enrolin.in/test/login.php?p=fetchall") 
           .then(function (response) { 
            $scope.students = response.data; 
           }) 
    }) 

Контроллер, который извлекает данные и отображает:

.controller("studentSearchController", function ($scope, $http, $routeParams) { 
     if($routeParams.name) 
     { 
     $http({ 
      url: "http://enrolin.in/test/login.php?p=fetchbyname&&name=", 
      method: "get", 
      params: { name: $routeParams.name } 
     }).then(function (response) { 
      $scope.studs = response.data; 

     }) 
    } 
    else 
    { 
     $http.get("http://enrolin.in/test/login.php?p=fetchall") 
           .then(function (response) { 
            $scope.students = response.data; 
           }) 
    } 
    }) 

Раньше каждый раз я хотел поставить ссылку в HTML маршрутизировать я использовал писать как <a href="#/courses">courses</a> Но теперь, когда я хочу включить его в функцию, я не уверен, что писать. Пожалуйста помоги.

ответ

1

Привет @AkhilEshKhajuria,

Вы не используете то же имя, что вы упомянули в конфигурации маршрутизации. Название маршрутизации: «/ studentSearch /: name?» но вы использовали в функции как "/ studentsSearch /".

Пожалуйста, попробуйте заменить $location.url("/studentsSearch/" + $scope.name); с $location.path("/studentsSearch/" + $scope.name);

Правильный вопрос присвоения имен и он должен работать.

Я пробовал это, и он отлично работает.

+0

Все еще Не работает –

+0

Вы проверили наличие ошибок javascript с помощью инструментов разработчика? В любом случае, вы можете просто сказать мне следующий шаг, когда вы пытаетесь это сделать? На какой странице вы пытаетесь это сделать? – Oshadha

+0

Привет @АхильЭшКаджурия, нашел проблему. Ваша функция устанавливает путь как $ location.path ("/ studentsSearch /" + $ scope.name); и имя маршрутизации - это .when ("/ studentSearch /: name". Имена не совпадают. Измените имя, и оно будет работать. – Oshadha

Смежные вопросы