繁体   English   中英

延迟href执行单击,直到ajax调用之后

[英]Delay href execution click until after ajax call

在骨干视图中,是否可以将对锚href的单击的执行延迟到ajax调用完成之前?

我需要的是:

  1. 用户单击href。
  2. 点击时,会触发ajax调用;
  3. 如果ajax调用成功,则只有应执行href;

我做了一个测试,在链接到锚点的Backbone视图中添加了一个方法:

    clickNext: function(e){ 

        setTimeout(function(){
            console.log("test"); 
        }, 5000); 

不幸的是,href是在超时结束之前执行的。

之所以需要它,是因为我想开发一个向导,其中每个页面都有一个单独的URL。 我对每个页面加载都使用localstorage进行检查,并且对每个“下一步”单击都执行持久性存储(Ajax)。

为防止原始单击触发位置更改,请使用e.preventDefault()然后在ajax调用成功后,可以使用完成或成功回调来手动更改窗口哈希位置。

myApp.Views.ExampleView = Backbone.View.extend({
    el: "#myView",
    events: {
        "click a": "handleLink"
    },
    handleLink: function (e) {
        e.preventDefault();
        var link = $(e.currentTarget).attr('href');
        $.ajax("/echo/json/")
            .done(function () {
            location.hash = link
        })
    }
});

var myView = new myApp.Views.ExampleView();

小提琴-http: //jsfiddle.net/leighking2/hjcg77h2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM