【问题标题】:Angularjs - Reload page even if same urlAngularjs - 即使相同的网址也重新加载页面
【发布时间】:2016-02-20 21:59:21
【问题描述】:

我正在使用 Angularjs 1.3,我的项目有 2 个子菜单:

  1. href="/submenu"
  2. href="/submenu?page=1"

当我在子菜单页面并点击第二个 url 时,页面不会重新加载,它只是更新 url,但什么也不做。当用户使用该查询参数登陆第二个网址时,我已经编写了代码。

我不想强制重新加载页面 window.location.reload();,因为它会清空 $rootscope。

我有一个解决方案,通过使用 Angular ui-router 重新定义 url 代码,但它很耗时,因为重新定义会破坏主要功能。我现在正在寻找快速解决方案。

【问题讨论】:

  • 使用 ng-view 将页面显示在当前页面上。
  • 您是否正确配置了路由?如果不试试这篇文章scotch.io/tutorials/…
  • 是的,我已经正确配置了,这不是问题。这是 Angular 的行为,如果我们单击与当前页面具有相同 url 的链接,它不会重新加载页面。我已经解决了我的问题并在下面回答。

标签: javascript jquery angularjs reload url-parameters


【解决方案1】:

也许这行得通:

<a href="javascript:window.open('?page=1','_self');">...</a>

检查 $rootscope 是否为空,以确保它。

【讨论】:

    【解决方案2】:

    我很快修好了。有一个人发表了评论,但现在将其删除。他说我应该用数据调用函数来更新视图,而不是重定向,我做到了。

    但在我的情况下,菜单超出了该页面的控制器范围,我使用 vanilla js 进行链接重定向(需要在重定向之前执行一些操作)。 因此,为了调用控制器的函数,我检查了我是否在同一页面上,如果是,则从页面中获取角度范围,以便获取该控制器中定义的所有函数,使用:

    angular.element($('#someId')).scope();
    

    应该在定义 ng-controller 的元素上设置 SomeID。它为我提供了该控制器范围内定义的所有功能。然后我只是调用了这个函数,页面得到了更新,没有重新加载,问题就解决了。

    【讨论】:

      【解决方案3】:

      使用target="_self"

      1. href="/submenu" target="_self"
      2. href="/submenu?page=1" target="_self"

      【讨论】:

        猜你喜欢
        • 2014-03-20
        • 2013-07-07
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 2017-11-28
        • 2010-10-22
        • 2011-05-15
        相关资源
        最近更新 更多