[英]Delay href execution click until after ajax call
在骨干视图中,是否可以将对锚href的单击的执行延迟到ajax调用完成之前?
我需要的是:
我做了一个测试,在链接到锚点的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.