单击浏览器后退按钮时,Ember.js执行操作

时间:2015-06-10 21:55:16

标签: ember.js ember-data

当用户点击浏览器中的后退按钮然后根据后端响应重定向到路由时,我需要执行API调用。 我已经阅读了有关位置API的信息,但我无法弄清楚如何区分由于点击链接而导致的网址更改以及因浏览器后退按钮而导致的网址更改。 任何建议都非常感谢。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案并在此处分享。我不知道这是否是最好的解决方案,但它对我有用。

我已经按照可以导航的顺序创建了一个包含路由列表的数组,假设它是['route1', 'route2', 'route3', 'route4']。在我的情况下,可以跳过路线,但必须保持订单。例如,导航路径可以是

route1 - > route2 - >路径4

但不是

route1 - > route4 --->路径3

从route4到route3只能使用后退操作(浏览器按钮或页内按钮)来完成。

在每个路由的willTransition动作中,我将数组中目标路由的索引与当前路由的索引进行比较。如果第一个值低于第二个值,则用户正在导航,然后我可以执行API调用:

// environment.js
ENV.APP.routeList = ['route1', 'route2', 'route3', 'route4']

// route
App.Route1 = Ember.Route.extend({
    ...

    actions: {
        willTransition: function(transition) {
            var routeList = ENV.APP.routeList;
            if (routeList.indexOf(transition.targetName) < routeList.indexOf(this.get("routeName"))) {
                console.log("GO BACK");
                this.send("back");
            }
        }
    }
});

答案 1 :(得分:0)

我退房willTransition。既然你的问题没有给我们很多帮助,那么这里有一些伪代码:

<强>路由/ some_route.js

function randomClick(number) {
    var gamerand = Math.floor(Math.random() * (3 - 1 + 1)) + 1;

    gamerand == 1 ? loseClick() : winClick();
}