2014-11-06 4 views
0

백본보기에서 ajax 호출이 완료 될 때까지 앵커 href에 대한 클릭 실행을 지연시킬 수 있습니까?지연 href 실행 ajax 호출 후까지 클릭

내가 필요로하는 것입니다 : 사용자가 HREF를 클릭

  1. ;
  2. 클릭시 아약스 호출이 실행됩니다.
  3. ajax 호출이 성공한 경우에만 href를 실행해야합니다. 제한 시간이 종료되기 전에

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

    불행하게도, HREF가 실행됩니다

나는 앵커에 연결된 백본보기로 방법을 추가 테스트를했다.

내가 필요한 이유는 모든 페이지마다 별도의 URL이있는 마법사를 개발하고자하기 때문입니다. 각 pageload에서 localstorage를 사용하여 검사를 수행하고 "다음"클릭 할 때마다 영구 저장소 (Ajax)를 수행합니다.

+0

기본 이벤트 처리를 방지하고 나중에 JS를 통해 HREF를 열 수 있습니다. 지연이 너무 크면 브라우저 팝업 차단기가 트리거 될 것입니다. (아마도'location'과 함께하지 않을 것입니다.) – Yoshi

답변

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(); 

바이올린 - http://jsfiddle.net/leighking2/hjcg77h2/

+0

그건 정말로 해결책입니다, 고마워요. – Trace

관련 문제