![](/img/trans.png)
[英]How to get data from Angularjs Service Response to Controller Scope Object
[英]How to redirect from the service to the controller with the response data in angularjs?
我需要一些幫助,所以我是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;
});
};
}
對於頁面流不足,請參見下圖。
注意 :可能是我的方法會出錯,請幫助我!
嘗試將服務作為依賴項傳遞給控制器,如果這不起作用,請嘗試解決此問題,如下所述:
我面臨着同樣的問題。 我這樣解決了:
我為每個頁面的模塊制作了不同的模塊,每個模塊中都有一個控制器。 第一頁的模塊包含該服務。 為了在不同的控制器中使用相同的服務,我將第一個模塊(包含該服務)作為其他模塊中的依賴項傳遞,然后將第一個模塊的服務作為控制器中的依賴項以及參數的傳遞函數。控制器。
因此,基本上每個頁面都有一個單獨的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){
...
...
}]);
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.