更新子控制器作用域中select
元素的简洁方法是什么,以便所选项的ID与父作用域中的ID匹配?
我有两个控制器:
OrderController
CustomerController
OrderController
加载订单并在订单上显示。
CustomerController
是OrderController
表单中子表单的范围。它显示所有客户的列表,默认客户是与订单关联的客户。用户可以编辑所选客户的详细信息,也可以从子表单中添加客户。
到目前为止,我已经想过两个,但似乎都不是很好。
$resource
的JSON中包含所有客户的列表。这不会起作用,因为用户需要一个完整的独立控制器来更新子窗体上的客户。select
属性更新customer_id
。这似乎更好但仍然很难。答案 0 :(得分:1)
要在两个控制器之间进行通信,您通常会广播/发出,例如:
(CoffeeScript的)
CustomerController:
Api.Customer.get(
id: $scope.customer_id
).$promise.then (data) ->
$scope.$emit 'event:updateOptionId', id
OrderController:
$scope.$on 'event:updateOptionId', (event, id) ->
$scope.customer_id = id
我不知道您应用的结构,但这是根据客户控制器中的操作将新客户ID传递给订单控制器。如果你发布了一些代码,你可能会得到更全面的答案。
答案 1 :(得分:0)
我发现Angular会自动处理更新。问题是我的服务器正在返回订单数据的单项数组。所以订单属性的customer_id没有进入$scope.order.customer_id
;它进入了$scope.order[0].customer_id
。纠正后端解决了这个问题。