Javascript AngularJS-等待加载数据以显示视图
我对AngularJS非常陌生,在阅读了几个问题和一些文章之后,我对加载数据的正确方法有点困惑,并等待加载数据后显示视图 我的控制器看起来像这样Javascript AngularJS-等待加载数据以显示视图,javascript,angularjs,Javascript,Angularjs,我对AngularJS非常陌生,在阅读了几个问题和一些文章之后,我对加载数据的正确方法有点困惑,并等待加载数据后显示视图 我的控制器看起来像这样 app.controller('ResultsController', ['$scope','$http', '$routeParams', function($scope, $http, $routeParams) { $scope.poll = {}; $scope.$on('$routeChangeSuccess', functi
app.controller('ResultsController', ['$scope','$http', '$routeParams', function($scope, $http, $routeParams) {
$scope.poll = {};
$scope.$on('$routeChangeSuccess', function() {
showLoader();
$http.get("rest/visualizacion/" + $routeParams.id)
.success(function(data) {
$scope.poll = data;
hideLoader();
})
.error(function(data) {
// Handle error
});
});
}]);
我见过有人为$http调用创建服务的人,有必要吗?为什么更好 正确的方法是使用路由的
resolve
属性。发件人:
解析-{Object.=}
-应注入控制器的可选依赖关系映射。如果这些依赖项中的任何一个是承诺,路由器将在控制器实例化之前等待它们全部被解析或一个被拒绝。如果成功解析所有承诺,则注入已解析承诺的值并触发$routeChangeSuccess事件。如果任何承诺被拒绝,将触发$routeChangeError事件。地图对象是:
- key–
:要注入控制器的依赖项的名称{string}
- 工厂-
:如果是string,则它是服务的别名。否则,如果为函数,则注入该函数,并将返回值视为依赖项。如果结果是一个承诺,则在将其值注入控制器之前对其进行解析。请注意,ngRoute.$routeParams仍将引用这些解析功能中的上一条路由。改为使用$route.current.params访问新的路由参数{string | function}
resolve: {
poneys: function($http) {
return $http.get('/api/poneys').then(function(response) {
return response.data;
)};
}
}
您的控制器将被定义为
app.controller('PoneyListCtrl", function($scope, poneys) {
$scope.poneys = poneys;
// ...
});
当然,您也可以将生成$http调用并返回小马列表的代码放在服务中,并在解析中使用该服务。请查看此问题的答案,并查看加载指示器。总体思路是将$http调用放在服务中,然后从控制器内部调用它,在那里,您可以相应地处理输出。尝试阅读更多关于$http、$q和angular中的factory服务的信息