0

概括

什么是更新的干净方式select更新子控制器范围中的元素以使所选项目的 ID 与父范围中的 ID 匹配的

细节

我有两个控制器:

  • OrderController
  • CustomerController

OrderController加载订单并将其显示在订单表格上。

CustomerController是子窗体内的范围OrderController。它显示了所有客户的列表,默认客户是与订单关联的客户。用户可以编辑所选客户的详细信息或从子表单添加客户权限。

可能的解决方案

到目前为止我已经想到了两个,但似乎都不是很好。

  1. 在传递给 Order 的 JSON 中包含所有客户的列表$resource。这是行不通的,因为用户需要一个完全独立的控制器来更新子表单上的客户。
  2. 当客户在 CustomerController 中加载时触发一个事件。OrderController 处理该事件,select根据其订单的customer_id属性更新 。这似乎更好,但仍然很老套。
4

2 回答 2

1

要在两个控制器之间进行通信,您通常会广播/发射,例如:

(咖啡稿)

客户控制器:

Api.Customer.get(
  id: $scope.customer_id
).$promise.then (data) ->
  $scope.$emit 'event:updateOptionId', id

订单控制器:

$scope.$on 'event:updateOptionId', (event, id) ->
  $scope.customer_id = id

我不知道您的应用程序的结构,但这是基于客户控制器中的操作将新客户 ID 传递给订单控制器。如果您发布一些代码,您可能会得到更彻底的答案。

于 2014-05-20T16:15:16.443 回答
0

我发现 Angular 确实会自动处理更新。问题是我的服务器正在为订单数据返回一个单项数组。所以 order 属性的 customer_id 没有进入$scope.order.customer_id;它正在进入$scope.order[0].customer_id。在后端更正该问题解决了该问题。

于 2014-05-20T17:42:11.070 回答