2013-03-16 63 views
2

我有一个可以返回订单的宁静服务。这个订单有一个项目清单。我正在制作屏幕,您可以从订单编辑特定项目。所以我需要有物品清单才能找到并显示特定物品的信息。我解决它像这样:

$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"> 

我的问题是:这是解决这个问题的最好方法是什么? (我不想使用具有解决方案的路由。)

+2

我不认为有解决这种本地化和特定问题的“最佳途径”。所以我的问题是:您的解决方案是否满足您的要求? – Stewie 2013-03-16 18:06:40

+1

我认为这个问题实际上适用于更广泛的情况,而不仅仅是这个具体的例子。上面的代码使用另一个库(underscoreJs)来尝试过滤和查找所需的数据。这感觉就像在大型应用程序中经常会遇到的情况一样,我也很好奇,如果有更好的方法来与AngularJS做到这一点。 – 2013-03-16 18:54:27

+1

@JimCooper实际上听起来更像是从API发送的数据结构需要被映射以适应UI。很明显,使用'unexcore'是一种方便,但使用本地脚本或使用'angular.forEach'循环数据映射到新数组 – charlietfl 2013-03-16 23:58:00

回答

5

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

/orders/:id/items/:itemId

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

如果这是不可能的,你在做什么,似乎罚款。

+0

这是一个好主意,但仍然不难。 – 2013-03-18 01:13:56