在Backbone视图中,是否可以延迟执行锚点href上的点击直到ajax调用完成?
我需要的是:
我做了一个测试,将一个方法添加到Backbone视图,链接到一个锚点:
clickNext: function(e){
setTimeout(function(){
console.log("test");
}, 5000);
不幸的是,href在超时完成之前执行。
我之所以需要这个,是因为我想开发一个向导,其中每个页面都有一个单独的URL;我在每个页面加载上使用localstorage执行检查,并在每次“下一步”单击时执行持久存储(Ajax)。
答案 0 :(得分:1)
要防止原始点击触发位置更改,请使用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();