Я изучаю Angular, так что вот мой testapp: http://enrolin.in/test/#/students
Теперь я хочу искать базу данных по имени. Поэтому я создал 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>
Но теперь, когда я хочу включить его в функцию, я не уверен, что написать. Пожалуйста помоги.
Привет @AkhilEshKhajuria,
Вы не используете то же имя, что вы упомянули в конфигурации маршрутизации. Имя маршрута : «/ studentSearch /: name?» но вы использовали в функции как «/ studentsSearch /».
Попробуйте заменить $location.url("/studentsSearch/" + $scope.name);
с $location.path("/studentsSearch/" + $scope.name);
Исправьте проблему именования, и она должна работать.
Я пробовал это, и он отлично работает.