在Angular应用程序中的location.reload之后,后退按钮不起作用

时间:2015-08-24 14:01:09

标签: javascript angularjs back

在我的应用程序中,我有一个创建HTTP承诺的按钮,并在成功的回调中刷新页面(使用window.location.reload(true))。但是,这会将页面的新副本添加到浏览器历史记录中,因此后退按钮不起作用,因为它只是再次加载同一页面。知道如何解决这个问题吗?

如果可能,我正试图支持ie8。

2 个答案:

答案 0 :(得分:0)

您对问题的评论指出您的方法并非最佳。您应该拥有一个更新(已加载)视图的函数,而不是完全重新加载所有内容

但是,如果您确实坚持使用此行为,则可以使用location.replace()代替,并将其传递给当前网址。这基本上会重新加载页面,而不会在历史堆栈中添加副本。

答案 1 :(得分:0)

请参阅:https://docs.angularjs.org/guide/$location

  

有一种特殊的替换方法可用于告诉$ location服务,下次$ location服务与浏览器同步时,应替换最后一条历史记录而不是创建新的历史记录。当你想要实现重定向时,这很有用,否则会破坏后退按钮(导航后会重新定位重定向)。要在不创建新浏览器历史记录的情况下更改当前URL,您可以调用:

<services>
    <service name="Webservice.Service1" behaviorConfiguration="ServiceBehavior">
            <endpoint binding="basicHttpBinding" contract="Webservice.IService1"
            bindingConfiguration="Binding1"/>
    </service> 
</services>

注意:如果您使用的是AngularJS,我建议您坚持使用框架提供给您的$ services,因为它们的行为与它们的JavaScript对应物相同,除非它们也包含在$ scope中。用于防止Angular应用程序中的任何不一致。