Angular UI嵌套使用不同参数

时间:2015-11-18 21:12:57

标签: angularjs angular-ui-router

角度:“1.3.15” angular-ui-router:“~0.2.13”

TL; DR:我应该如何为嵌套视图提供值?

enter image description here

为了简洁起见,我将大大简化应用程序,以便专注于解决问题。我有两个主要观点,称为客户和退款。每个主视图都有一个名为Notes的共享嵌套视图。 Notes视图使用customerId加载并显示相对于客户的注释。 Customer视图的路由有customerId,但Refunds没有。查看“退款”视图时,默认情况下会隐藏“备注”部分。一旦用户选择列表中的一个退款,我希望Notes视图为所选客户加载注释。由于Notes控制器正在使用$stateParams.customerId,因此在“退款”视图上加载时它将为空。退款控制器知道选择了哪个customerId,但我需要一些方法来告诉嵌套的Notes视图加载哪个customerId。

到目前为止,我已经提出了一些选择,但我不确定我是否喜欢它们中的任何一种,但是现在它们都是。

  1. 当用户在退款页面上选择客户时,我可以导航到/ refunds /:customerId。不喜欢这样,因为页面重新加载,我必须在从stateParams重新加载页面后设置所选项目。
  2. 用户选择客户后,使用$provide提供一个被注入NotesController的customerId。不喜欢这样,因为它很俗气,需要我在CustomerController上做同样的事情。
  3. 警告:我正在使用ControllerAs语法,因此范围不会相互继承。这可以防止我在主作用域上设置customerId并在嵌套作用域中引用它。

1 个答案:

答案 0 :(得分:0)

在您的父作用域中,将customerId存储在当前作用域($scope.customerId = $stateParams.customerId)中,并在子作用域上,通过$scope.$parent.customerId

从其父作业中获取客户ID