我需要一些帮助,而且我是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()
,但不会重定向。
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;
});
};
}
对于页面流程的理解,请参见下图。
注意:我的方法可能会出错,请帮助我!
答案 0 :(得分:0)
尝试将服务作为依赖项传递给控制器,如果不起作用,请尝试解决它,如下所述:
我遇到了同样的问题。我这样解决了:
我为每个页面制作了不同的模块模块,每个模块都有一个控制器。第一页的模块包含该服务。 为了在不同的控制器中使用相同的服务,我将第一个模块(包含服务)作为依赖项传递给其他模块,然后将第一个模块的服务作为控制器中的依赖项传递,并作为参数传递给其他模块。控制器。
所以基本上我为每个页面都有一个单独的Javascript文件,其中一个模块包含一个控制器,主模块和服务作为依赖项传递。
制作第一个模块:
var app = angular.module('Dashboard', ['ngRoute']);
以相同的方式制作第一个控制器。
以同样的方式提供服务:
app.service('packageService', ['$rootScope','$http', function($rootScope, $http){
this.getPackageData=function(){
...
return...
};
}]);
为第二个控制器创建一个不同的模块,并将第一个模块(仪表板)作为依赖项传递:
var app2 = angular.module('SecondPagemodule', ['ngRoute', 'Dashboard']);
将控制器放在第二个模块中,并将服务作为依赖关系和参数传递给控制器的功能。
app2.controller('ControllerForSecondPage', ['$scope', '$http', 'PackageService', function($scope, $http, PackageService){
...
...
}]);
我希望这会有所帮助。