我正在寻找已经存在的javascript库(AngularJS模块)或者至少是一种最佳实践技术,用于在视图需要时自动加载嵌套资源,给定已加载的父资源
以下是一个示例,并假设用户实际上来自某些REST API,通过ajax。
var app = angular.module('app', [])
.controller('TestController', function($scope, $http) {
$scope.user = {
name: "John Smith",
creditCard: {
"network": "Visa"
}
};
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="TestController">{{user.creditCard.network}}</div>
</div>
&#13;
现在假设用户,信用卡和其他资源太大,无法在一个api呼叫中加载所有资源。也就是说,我不想发送连接到用户的整个资源图表。如果我包含用户&#34;朋友&#34;默认情况下收集,这可能是我的整个数据库!!
我知道json-ld和json-hal开始进入,因为他们超链接&#34;资源本身。如果我要使用HAL:
var app = angular.module('app', [])
.controller('TestController', function($scope, $http) {
$scope.user = {
"_links": {
"self": {
"href": "/api/v1.0/user/1231213"
},
"creditCard": {
"href": "/api/v1.0/creditCard/324324234"
},
},
name: "John Smith"
};
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="TestController">{{user.creditCard.network}}</div>
</div>
&#13;
有了这个,我当然可以手动$ http请求有关信用卡的详细信息(知道我需要显示有关信用卡的信息):
$http({
url: user._links.creditCard.href
}).success(function(resp) {
user.creditCard = resp;
});
&#13;
现在,这是我的问题:这是一个好主意,如果是这样,如何(使用现有的AngularJS库或其他方式)获取任何嵌套资源(如creditCard),只有当AngularJS看到我需要它时才会自动加载在一个视图中?当视图要求数组中成员的属性,以及控制器不必知道数据的结构/模式(仅视图)时,这一点尤为重要。
复杂的例子:如果我需要user.creditCard.transactions [i] .recipient.name并且我只有root用户对象(并且通过HAL我知道用户有一个creditCard嵌套对象)怎么办?此技术/库需要先协调信用卡,然后是交易,然后是收款人。
我还在权衡这个问题是否带来好处,因为原始方案是1个API调用并且可能是一个巨大的响应,而可能是几十个或几百个API调用,每个调用都有一个小的负载,最糟糕的是与前者相同的聚合尺寸。
提前致谢!
更新:我正在调查角度资源($资源)和Restangular,不确定他们是否会在那里得到50%或100%。
额外信用:如果我真的想要进一步优化并进一步优化...让我们说用户和收件人之间的每个父对象都太重了,REST API是完全嵌套。也就是说,我可以直接调用/ user / 1 / creditCard / transactions / recipients或其他东西并获取收件人资源。上述建议可能会使用拦截器或其他什么来代替吗?