【发布时间】:2015-11-18 21:12:57
【问题描述】:
角度:“1.3.15” angular-ui-router: "~0.2.13"
TL;DR:我应该如何为嵌套视图提供值?
为简洁起见,我将大大简化应用程序,以尝试专注于该问题。我有两个主要视图,称为客户和退款。每个主视图都有一个共享的嵌套视图,称为 Notes。 Notes 视图使用 customerId 加载并显示与手头客户相关的备注。 Customer 视图的路线有一个 customerId,但 Refunds 没有。查看退款视图时,备注部分默认隐藏。一旦用户选择列表中的退款之一,我希望备注视图为所选客户加载备注。由于 Notes 控制器使用的是$stateParams.customerId,因此在 Refunds 视图中加载时它将为空。 Refunds 控制器知道选择了哪个 customerId,但我需要一些方法来告诉嵌套的 Notes 视图要加载哪个 customerId。
到目前为止,我已经提出了一些选择,但我不确定我是否喜欢其中任何一个,但它们就在这里。
- 当用户在退款页面上选择客户时,我可以导航到 /refunds/:customerId。不喜欢这样,因为页面会重新加载,并且我必须在页面从 stateParams 重新加载后设置所选项目。
- 用户选择客户后,使用
$provide提供一个customerId,该customerId 将被注入到NotesController 中。不喜欢这样,因为它很俗气,需要我在 CustomerController 上做同样的事情。
警告:我使用的是 ControllerAs 语法,因此作用域不会相互继承。这可以防止我在主范围上设置 customerId 并在嵌套范围中引用它。
【问题讨论】:
标签: angularjs angular-ui-router