AngularJS:在GetJSON上完成使用其他控制器中的数据
我是个新手AngularJS:在GetJSON上完成使用其他控制器中的数据,angularjs,Angularjs,我是个新手 // This is my main controller app.controller('AppCtrl', ['$rootScope', '$scope', 'cfpLoadingBar', '$http', function ($rootScope, $scope, cfpLoadingBar, $http) { cfpLoadingBar.start(); $rootScope.$on('$stateChangeSuccess', function (ev
// This is my main controller
app.controller('AppCtrl', ['$rootScope', '$scope', 'cfpLoadingBar', '$http',
function ($rootScope, $scope, cfpLoadingBar, $http) {
cfpLoadingBar.start();
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
//stop loading bar on stateChangeSuccess
event.targetScope.$watch("$viewContentLoaded", function () {
// HERE I want to send request to API and on complete do
// 1. Complete loadbar
// 2. Write response to global var and use it from other controller
$http.get(
'/api/',
{}
).then(function (response) {
// Completing loadbar
cfpLoadingBar.complete();
$SOME_GLOBAL_VAR.api = response;
});
});
});
}]);
// Controller 1
app.controller('Ctrl_1', ["$scope", "$http" function ($scope, $http) {
$scope.param = 'get_data_1';
When $SOME_GLOBAL_VAR.api
console.log($SOME_GLOBAL_VAR.api);
}]);
我想对不同的控制器使用一个api请求。
所以我想加载API,当它完成时,每个控制器都将呈现自己的部分。
现在我不明白如何监听API加载完成了吗?您可以尝试创建一个服务,并跨控制器使用您的服务
您可以通过以下方式实现
$http.get(
'/api/',
{}
).then(function (response) {
// Completing loadbar
cfpLoadingBar.complete();
$rootScope.$emit("receivedApiUpdate", response);
});
angular.module("my_module")('controller1', ['$rootScope', function($rootScope) {
$rootScope.$on('receivedApiUpdate',function(event, response){
// Do your work
});
}]);
angular.module("my_module")('controller2', ['$rootScope', function($rootScope) {
$rootScope.$on('receivedApiUpdate',function(event, response){
// Do your work
});
}]);
angular.module("my_module")('controller3', ['$rootScope', function($rootScope) {
$rootScope.$on('receivedApiUpdate',function(event, response){
// Do your work
});
}]);
这对我有帮助!谢谢!