Мне нужна помощь, и я новичок в angularjs.
Я создал приложение для туров. Здесь у меня есть три контроллера для каждой страницы и одна служба для получения данных из ответа.
У меня есть четыре кнопки (ссылки выглядят как испанский, французский, индийский, американский и т.д.) На моем нижнем колонтитуле.
Моя проблема заключается в том, что при нажатии на кнопку местоположения на главном контроллере (packageController) я могу получить доступ к данным ответа без перенаправления, потому что это тот же самый контроллер, но у меня есть другие страницы, у которых есть контроллер 1 и 2, от этого контроллера мне нужно для перенаправления на главный контроллер, но я не могу этого добиться.
приложение:
var app = angular.module("dashboard");
Обслуживание:
app.factory('packageService',function($http) {
return {
getData: function (location) {
var promise = $http({
method:'GET',
url:"index.php/tours" ,
params:{'keyword': location}
})
.success(function (data, status, headers, config) {
return data;
})
.error(function (data, status, headers, config) {
return {"status": false};
});
return promise;
}
}
});
Главный контроллер: это работает
app.controller("packageController", function($scope, packageService){
$scope.footerLink = [
link1 : paris,
link2 : india,
link3 : america
];
$scope.goBtn = function(search){
packageService.getData(search.location).then(function(promise){
$scope.packages = promise.data;
});
};
}
Контроллер 1
Если я нажимаю на одну из этих ссылок goBtn()
колонтитула с моего сайта, я goBtn()
, но не перенаправляет.
app.controller("hotelController", function($scope, packageService){
$scope.footerLink = [
link1 : paris,
link2 : india,
link3 : america
];
$scope.goBtn = function(search){
packageService.getData(search.location).then(function(promise){
$scope.packages = promise.data;
});
};
}
Контроллер 2
app.controller("flightController", function($scope, packageService){
$scope.footerLink = [
link1 : paris,
link2 : india,
link3 : america
];
$scope.goBtn = function(search){
packageService.getData(search.location).then(function(promise){
$scope.packages = promise.data;
});
};
}
Для подпрограммы потока страниц, пожалуйста, см. Это ниже.
Примечание: Возможно, мой подход будет неправильным, пожалуйста, помогите мне!
Попробуйте передать службу как зависимость также контроллерам, если это не сработает, попробуйте решить ее, как описано ниже:
Я столкнулся с той же проблемой. Я решил это так:
Я создал модули для каждого модуля, каждый модуль имел в нем контроллер. Модуль первой страницы содержал сервис. Чтобы использовать ту же службу в разных контроллерах, я передал первый модуль (который содержит службу) как зависимость в других модулях, а затем передал службу первого модуля как зависимость в контроллере и как аргумент в функции контроллер.
Поэтому в основном у меня был отдельный файл Javascript для каждой страницы с модулем, содержащим контроллер с основным модулем и службой, переданными в качестве зависимостей.
Сделайте первый модуль:
var app = angular.module('Dashboard', ['ngRoute']);
Сделайте первый контроллер таким же образом.
Сделайте сервис таким же образом:
app.service('packageService', ['$rootScope','$http', function($rootScope, $http){
this.getPackageData=function(){
...
return...
};
}]);
Создайте другой модуль для второго контроллера и передайте первый модуль (Dashboard) в качестве зависимости:
var app2 = angular.module('SecondPagemodule', ['ngRoute', 'Dashboard']);
Сделайте контроллер во втором модуле и передайте службу как зависимость и в качестве параметра функции контроллера.
app2.controller('ControllerForSecondPage', ['$scope', '$http', 'PackageService', function($scope, $http, PackageService){
...
...
}]);
Надеюсь, это поможет.
app.controller('controllername', ['Packageservice', function(packageservice){}]);