javaScript中的异步数据检索
Asynchronous data retrieving in javaScript
我在那里,
我正在用Restangular和angular-local-storage的帮助下构建一个Angular.js应用。我需要从RESTFull服务服务器检索一些数据,并将其分配给$scope变量。我想知道我怎么能等待所有的数据加载之前加载到我的视图(html)。
到目前为止我所做的是:
app.controller('InventoryController', function($scope, inventoryService) {
$scope.productList = inventoryService.getProduces();
console.log($scope.productList); // At that point, $scope.productList is null
});
app.service('inventoryService', function(entityService, browserStorageService) {
entityService.allUrl('product', entityService.getBaseUrl).getList().then(function(data){
console.log(data); // The data variable is not null here.
browserStorageService.set('producList', data);
});
this.getProduces = function() {
return browserStorageService.get('producList');
};
});
app.service('browserStorageService', function(localStorageService) {
localStorageService.clearAll();
return localStorageService;
});
app.service('entityService', function(Restangular) {
Restangular.setBaseUrl('http://localhost:8000/rest/');
return Restangular;
});
我对JavaScript的异步特性一点也不满意,我相信它很简单,但我不知道该怎么做才能纠正这种情况。
在第一次调用控制器时,数据没有加载到页面中,但是当我再次调用它而不重新加载应用程序时,数据就在那里。
谢谢你的帮助!
不能在控制器中调用inventoryService.getProduces();
,你必须在应用程序的配置部分使用来自service的数据创建resolve对象。之后,您可以访问传递给控制器的数据。
app.config(function($routeProvider){
$routeProvider
.when('/',{
template:'',
controller: 'InventoryController',
resolve:{
products: function(inventoryService) {
return inventoryService.getProduces();
}
}
});
});
app.controller('InventoryController', function($scope, products) {
$scope.productList = products;
console.log($scope.productList);
});
模板和路由路径应该根据你的应用结构来设置。
相关文章:
- 如何在corona sdk中从CK编辑器中检索数据
- 使用javascript进行JSON数据检索
- 使用JSON数据检索AJAX外部成功函数
- 将jquery HTML方法中的数据检索到数组中
- PHP/MySQL 时间数据检索和创建倒计时
- 将数据库数据检索到JSON-移动登录表单
- angularjs中的异步数据检索
- 如何将索引数据库表数据检索到变量
- 简单的Firebase数据检索
- 如何在 JQGard 加载时禁用数据检索
- 如何将角度数据检索到其他JS文件中
- 异步数据检索和缓存
- 如何从服务中将数据检索到指令(angularjs)中
- 动态表单字段和数据库数据检索
- PHP post请求数据检索使用Jquery AJAX
- javaScript中的异步数据检索
- Json数据检索jquery
- 在Firebase中使用Ionic异步数据检索的问题
- JQuery事件处理与数据检索通过POST
- Angular将特定数据检索到$scope变量中不起作用