使用angular路由调用$http
$http calls with angular routes
我只是在我的angular应用程序中设置路由。第一个视图,List
发出http调用来获取演示列表
function ListController($scope, $http)
{
$scope.error = null;
$scope.presentations = null;
$scope.requesting = true;
$scope.currentTitle = '-1';
$data = {
'type' : 'presentations'
};
$http.post('resources/request.php', $data, {timeout:20000})
.success(function(data, status, headers, config)
{
$scope.requesting = false;
$scope.presentations = data;
})
.error(function(data, status, headers, config)
{
$scope.requesting = false;
log(status + ', data:" ' + data + '"');
}
}
);
}
我的路线是
angular.module('main',[]).
config(function($routeProvider) {
$routeProvider.
when('/', {controller:ListController, templateUrl:'resources/views/list.html'}).
when('/view/:id', {controller:VforumController, templateUrl:'resources/views/vforum.html'}).
otherwise({redirectTo:'/'});
});
我的问题是,当我去#/view/:id
,然后回到/
的$http
调用再次调用。如何才能使它只在第一次进入应用程序时加载并引用与第一次加载时相同的数据?
我尝试在angular外部创建一个变量,并将其设置为第一次加载的数据。然后,在ListController
中基本上做了一个if data is null, do the $http call else set $scope.data = data
,但那不起作用。列表视图是空白的。$scope.data
是构建我的列表。
你想要的是一个服务,它在angular中是一个单例:
.factory( 'myDataService', function ( $http ) {
var promise;
return function ( $data ) {
if ( ! angular.isDefined( promise ) ) {
promise = $http.post('resources/request.php', $data, {timeout:20000});
}
return promise;
}
});
现在您可以简单地将对$http
的调用替换为对您的服务的调用:
function ListController( $scope, myDataService )
{
// ...
myDataService( $data ).then( function success( response ) {
$scope.requesting = false;
$scope.presentations = response.data;
}, function error( response ) {
$scope.requesting = false;
log(status + ', data:" ' + response.data + '"');
});
}
相关文章:
- Meteor HTTP调用出现问题
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- 正在等待HTTP调用从函数返回结果
- 如何在 http 调用成功时禁用锚标记
- 角度 2:使用一个 http 调用的结果来执行另一个调用
- 如何使用在 Javascript 中对 API 进行 HTTP 调用
- 如果statusCode不是200,那么从http调用返回什么类型的错误对象
- node.js:在for循环中进行http调用
- 如何在nodejs中的async.each中进行同步http调用
- 如何在node.js中使用promise进行同步http调用
- 当调用成功时,如何从angular 2中的http调用返回数据
- 循环AngularJS$http调用-TypeError:对象不是函数
- 我正在使用 $scope.$apply 在 http 调用后更新对象数组.谁能告诉我正确的方法
- Meteor HTTP 调用不断加载图像
- 进行多个 http 调用并使用承诺合并结果
- $http调用似乎产生了无限$digest循环
- AngularJS:http 链调用问题和 NodeJS:在多个 http 调用中使用变量的问题
- 使用 $watch 在属性更改时执行$http调用的角度服务
- AngularJS:如何使对象中的对象调用后续的http调用
- 如何在 ag-grid 中从 http 调用加载动态列和行(列和记录都应该是动态的)