2014-04-29 101 views
0

我有几个服务,我试图用它来在angularjs中的多部分表单的元素之间共享数据。一个例子是维护一系列访问状态的服务,当用户点击提供的后退按钮时,最后一个状态被弹出,并且页面与所有相关字段一起被重定向。Angularjs - 处理与服务有关的后退和前进按钮

但是,如果用户在浏览器上使用后退按钮,那么我的服务仍然认为它正在进行以下步骤。例如。我在B,我打回浏览器,模板加载页面A.但是,我目前的步骤是在服务B,我的下一步是C,这会导致各种问题。

我想支持后退/前进,但同时处理这些问题。有什么建议么?

+0

听起来像是正确的事情。不应该后退按钮回到步骤A? – TheVillageIdiot

+0

是的状态改变,但处理访问状态和当前状态/下一个状态的底层服务不反映这一点。所以我处于状态A,但逻辑认为我处于状态B,所以当我点击下一步时,会出现错误,或者我会跳到状态C – SMC

回答

0

最终我想出了如何用ui-router和$ stateParams代替数组来实现这个功能。

我使用运行函数侦听状态更改使用$ rootScope。$ on('stateChangeStart'),如果toState名称是我的动态状态,然后我测试从和到步骤,并查看它们是否有效基于我有一个服务的路由表。如果由于某些原因这些步骤无效,那么我将清除数据并重定向到表单的第一步。

其中的一部分是处理刷新,以便测试这个检查,如果fromState.url =“^”并设置一个rootScope变量。如果你的变量不存在,fromstate是“^”,那么你应该重定向。这可以防止刷新破坏实施,也可以无限刷新循环