【问题标题】:How to pass data from one html page to another in angularJS?如何在angularJS中将数据从一个html页面传递到另一个页面?
【发布时间】:2023-03-30 18:41:01
【问题描述】:

我有两个 html 页面。第一页是患者列表,每个患者都是一个超链接。预期的行为是,单击超链接(对应于患者)时,应将用户重定向到另一个包含相应患者详细信息的 html 页面。重定向正在发生。但是,我无法将数据从第一个 html 页面传递到第二个页面。

【问题讨论】:

  • 发布一些代码。您是否使用 2 个控制器和 2 个模板,1 个控制器和 2 个模板,您是否有用于显示数据的指令设置?问题太多,无法给出答案。
  • 你需要将对象或字符串传递到另一个页面吗?
  • 我有两个控制器。使用 Controller1,我可以显示患者列表(通过执行 get 操作)。每个链接(链接是患者)都有一个唯一的患者 ID。我有一个功能,在单击链接时,它将患者 ID 发送到控制器(Controller1)。利用 $broadcast 和 $on ,我可以将该患者 ID 发送到 Controller2。我什至可以显示从 Controller2 中选择(单击)的患者 ID。但我只能在 page1.html 中执行此操作(即在患者列表下方,而不指向 page2.html)。但我最理想的是将 pat id 发送到 page2。

标签: angularjs


【解决方案1】:

有很多方法可以做到这一点:

  1. 浏览器的localStorage (angular plugin)
  2. 网址参数 (angular $location)
  3. 服务器端会话
  4. Cookies,现在已经过时且效率低下,最好选择 #1 (using cookies with angular)

最佳适用实施取决于您的正面/背面架构

【讨论】:

    【解决方案2】:

    URL 应包含您要显示的项目的 ID,例如/patient/432.

    使用该 ID,第二个页面加载数据。

    如果您使用的是 Angular,并且两个页面实际上是单个应用程序的一部分,那么您将使用缓存数据的服务。也就是说,该服务加载您的患者列表并返回列表或列表中的单个项目。这样,您就不必每次都从服务器 API 加载各个项目。

    【讨论】:

    • 谢谢C14L,我使用服务在两个页面之间共享数据。但现在的问题是我无法将控制器 1 的函数内部的数据共享给控制器 2。如果你能帮我解决这个问题?
    • controller1 是否更改数据?它应该在您的服务上调用一个方法来做到这一点。该方法会更改服务中的数据,然后所有控制器都可以访问这些数据。或者,您可以将数据存储为 $rootScope 上的属性并在那里更改它,然后您的 controller2 也可以访问。
    • No Controller1 不会更改数据。它只是拿起论点(即Pat Id),我有点迷失了你提到的$rootScope 示例。你能详细说明一下吗?提前致谢:)
    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    相关资源
    最近更新 更多