【问题标题】:Angular UI nested View with different parameter具有不同参数的 Angular UI 嵌套视图
【发布时间】: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。

到目前为止,我已经提出了一些选择,但我不确定我是否喜欢其中任何一个,但它们就在这里。

  1. 当用户在退款页面上选择客户时,我可以导航到 /refunds/:customerId。不喜欢这样,因为页面会重新加载,并且我必须在页面从 stateParams 重新加载后设置所选项目。
  2. 用户选择客户后,使用$provide 提供一个customerId,该customerId 将被注入到NotesController 中。不喜欢这样,因为它很俗气,需要我在 CustomerController 上做同样的事情。

警告:我使用的是 ControllerAs 语法,因此作用域不会相互继承。这可以防止我在主范围上设置 customerId 并在嵌套范围中引用它。

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    在您的父作用域中,将customerId 存储在当前作用域($scope.customerId = $stateParams.customerId)中,在子作用域中,通过$scope.$parent.customerId 从其父作用域获取客户 ID

    【讨论】:

    • 我知道会出现这种情况 :) 我正在使用 ControllerAs,因此作用域不会从父作用域继承。我更新了 OP 来解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多