在我的网络应用程序中,我想在开始时,在run方法中加载所有用户数据,并将数据传递给其他控制器,以便在仪表板中显示给用户。
假设我在服务器上有一个数据结构
data = {
x : 30,
y: 20
}
我想在一个http请求中获取它(而不是创建多个http请求并创建多个promise)
我在app的run方法中运行的http请求
service.getDataFromServer = function(){
return $http.get('/admin/data').then(function(response) {
data = response.data;
});
};
这将创造一个承诺。
我想接受这个承诺并将其传递给其他要使用的控制器。
我的第一个问题是如何才能这样做,因此来自promise的数据将绑定到我要向用户显示的数据。
第二个问题是,在承诺解决之前,我可以使用结构字段吗? 例如
$scope.x = data.x
根据数据,我的意思是即将解决的数据
由于
答案 0 :(得分:0)
我想在一个http请求中获取它(而不是创建多个http请求并创建多个promise)
从http调用获得响应后,将数据保存在工厂/服务中,这样,您可以通过注入它来在您的情况下使用在其他位置,如控制器,这是最推荐的。
我想接受这个承诺并将其传递给其他要使用的控制器。 我怎么能这样做,所以来自promise的数据将绑定到我将要向用户显示的数据。
进行http调用并保存承诺。
service.getDataFromServer = function() {
var promise = $http.get('test.json');
service.savePromise(promise);
}
和
得到保存的承诺。
.controller('testCtrl', function(service) {
service.getSavedPromise().then(function(response){
console.log(response.data)
})
})
第二个问题是,在承诺解决之前,我可以使用结构字段吗?例如
$scope.x = data.x
// data is still undefined as promise is not resolved.so,you will get
TypeError
你可以在这里做得最好,你可以将data
合并到现有的数据对象/数组中,因此,Angular双向绑定可以为你做其余的事情。