我是Angular的新手,并且很难理解如何从已解决的承诺中获取价值。我使用$ q.all([element1。$ promise,e2。$ promise])。我得到了一个json对象的element1。对于,element2是一个包含2.0的标量。我尝试了元素[1]就像元素[0],但它不包含任何属性,所以我不知道如何获得值。我试过.val,.data等。我知道web api和angular都得到2.0。
resolve: {
accountResource: "accountResource",
account: function(accountResource, $stateParams, $q) {
var info = accountResource.get({ accountId: $stateParams.accountId });
var currentBalance = accountResource.getCurrentBalance({ accountId: $stateParams.accountId });
return $q.all([info.$promise, currentBalance.$promise]);
}
vm.account = account[0];
vm.currentBalance = account[1];
资源功能
function accountResource($resource) {
var webApiUrl = "https://localhost:44301";
return $resource(webApiUrl + '/api/account/:accountId', {}, {
get: {
method: 'GET'
},
query: {
method: 'GET',
isArray: true,
url: webApiUrl + '/api/account/search/:queryMethod/:queryString'
},
getCurrentBalance: {
method: 'GET',
url: webApiUrl + '/api/account/getcurrentbalance/:accountId'
}
});
}
答案 0 :(得分:0)
你可以调用$q.all
喜欢这个(使用字典而不是数组):
return $q.all({info: info.$promise, currentBalance: currentBalance.$promise})
之后以这种方式获取信息:
vm.account = account.info;
vm.currentBalance = account.currentBalance;
尝试重写您的资源:
function accountResource($resource) {
var webApiUrl = "https://localhost:44301";
// Add second parameter {accountId: "@accountId"}
return $resource(webApiUrl + '/api/account/:accountId', {accountId: "@accountId"}, {
get: {
method: 'GET'
},
query: {
method: 'GET',
isArray: true,
url: webApiUrl + '/api/account/search/:queryMethod/:queryString'
},
getCurrentBalance: {
method: 'GET',
url: webApiUrl + '/api/account/getcurrentbalance/:accountId'
}
});
}
<强>更新强>
您可以将transformResponse
属性添加到getCurrentBalance
中的accountResoure
功能。并将您的价值从API转换为json格式。
getCurrentBalance: {
method: 'GET',
url: webApiUrl + '/api/account/getcurrentbalance/:accountId',
transformResponse: function (balanceFromApi) {
return { balance: balanceFromApi };
}
}
最后你可以获得信息,喜欢这个:
vm.account = account.info;
vm.currentBalance = account.balance;
我用$httpBackend
服务测试了它,现在一切都很好。希望这会有所帮助。