Javascript AngularJS通过$resource数据绑定到复杂对象

Javascript AngularJS通过$resource数据绑定到复杂对象,javascript,angularjs,Javascript,Angularjs,我有一个返回订单的restful服务。此订单有一个项目列表。我正在制作屏幕,您可以在其中编辑订单中的特定项目。因此,我需要有项目列表,然后才能找到并显示特定项目的信息。我是这样解决的: $scope.order = orderResource.get({id:$routeParams.orderId}, function(order) { $scope.item = _.findWhere(order.items, {id:$routeParams.itemId}); }); <

我有一个返回订单的restful服务。此订单有一个项目列表。我正在制作屏幕,您可以在其中编辑订单中的特定项目。因此,我需要有项目列表,然后才能找到并显示特定项目的信息。我是这样解决的:

$scope.order = orderResource.get({id:$routeParams.orderId}, function(order) {
    $scope.item = _.findWhere(order.items, {id:$routeParams.itemId});
});
<input id="itemName" type="text" ng-model="item.name">
绑定方式如下所示:

$scope.order = orderResource.get({id:$routeParams.orderId}, function(order) {
    $scope.item = _.findWhere(order.items, {id:$routeParams.itemId});
});
<input id="itemName" type="text" ng-model="item.name">


我的问题是:这是解决这个问题的最好办法吗?(我不想使用解析路由。)

是的,您应该创建一个将返回特定项的端点。GET端点的一个示例可以是

/orders/:id/items/:itemId

$scope.item = orderResource.get({id:$routeParams.orderId, itemId: $routeParams.itemId});

如果这是不可能的,那么您现在所做的似乎很好。

我认为没有“最佳方法”来解决这样一个局部和特定的问题。所以我的问题是:你的解决方案满足你的要求吗?我认为这个问题实际上适用于更广泛的情况,而不仅仅是这个具体的例子。上面的代码尝试使用另一个库(下划线JS)来过滤和查找所需的数据。这感觉像是在更大的应用程序中经常出现的事情,我也很好奇是否有更好的方法使用AngularJS实现这一点。@JimCooper实际上听起来更像是从API发送的数据结构需要映射到合适的UI。显然,使用
undescore
很方便,但使用本机脚本或使用
angular.forEach
循环数据以映射到新数组并不困难